[ 
https://issues.apache.org/jira/browse/AVRO-1050?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

A B updated AVRO-1050:
----------------------

    Status: Open  (was: Patch Available)

Index: io.php
===================================================================
--- io.php      (revision 1304457)
+++ io.php      (working copy)
@@ -291,14 +291,13 @@
    * @returns integer count of bytes written.
    */
   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;
-  }
+  {
+    $this->check_closed();
+    $this->buffer .= $str;
+    $len = strlen($str);
+    $this->current_index += $len;
+    return $len;
+  }

   /**
    * Truncates the truncate buffer to 0 bytes and returns the pointer

                
> 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.3, 1.6.2, 1.6.1, 1.6.0
>            Reporter: A B
>              Labels: patch
>             Fix For: 1.7.0, 1.6.3
>
>
> 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