[ 
https://issues.apache.org/jira/browse/AVRO-1050?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13236657#comment-13236657
 ] 

A B commented on AVRO-1050:
---------------------------

As I mentioned we have a fix in place as follows (patch will be forthcoming):

Original code (io.php, class AvroStringIO):
  private function append_str($str)
  {
    $this->check_closed();
    $ary = str_split($str);
    $len = count($ary);
    $this->buffer = array_merge($this->buffer, $ary);
    $this->current_index += $len;
    return $len;
  }

Fixed code (io.php, class AvroStringIO): 
  private function append_str($str)
  {
    $this->check_closed();
    $this->buffer .= $str;
    $len = strlen($str);
    $this->current_index += $len;
    return $len;
  }

                
> Avro PHP consumes too much memory due to code in io.php (AvroStringIO 
> append_str)
> ---------------------------------------------------------------------------------
>
>                 Key: AVRO-1050
>                 URL: https://issues.apache.org/jira/browse/AVRO-1050
>             Project: Avro
>          Issue Type: Bug
>          Components: php
>    Affects Versions: 1.6.2
>            Reporter: A B
>             Fix For: 1.7.0
>
>
> While attempting to encode large messages, our team found that the PHP 
> run-time would exceed its memory limit and die. Profiling and use of 
> memory_get_usage showed us that we were spending a lot of time in append_str 
> and that the PHP process grew after every call to this method, resulting in 
> the leak-like behavior that caused the process to grow and then crash. We 
> rewrote append_str to use the string concatenation operator instead of the 
> somewhat elaborate scheme in place today (str_split, followed by the copying 
> of one byte at a time from the latter array to the final string) and the 
> memory usage issues disappeared with no loss of functionality. We would like 
> to provide the patch to fix this issue.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to