Bug #77655 [Opn->Fbk]: Long String in Return Value is Empty

From: Date: Fri, 22 Feb 2019 09:56:52 +0000
Subject: Bug #77655 [Opn->Fbk]: Long String in Return Value is Empty
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-219700@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=77655&edit=1 ID: 77655 Updated by: nikic@php.net Reported by: marc dot ruef at computec dot ch Summary: Long String in Return Value is Empty -Status: Open +Status: Feedback Type: Bug Package: Strings related Operating System: Linux Kernel 3.10.0-862.14.4.el7 PHP Version: 7.3.2 Block user comment: N Private report: N New Comment: Can you please provide a full reproduction script including the $result array that you're using? (Can just be some generated dummy data that produces this issue). Previous Comments: ------------------------------------------------------------------------ [2019-02-22 09:52:11] marc dot ruef at computec dot ch Description: ------------ I am having a for loop which is iterating through a large array $result. Every array item $row is used to generate a new line of string $line. This string is concatenated into $str. To preserve memory, I am using unset($result[$i]) to clear every array item that has been processed in the original array. This (more or less exotic piece of code) works unless the string exceeds a length of 999'775 characters. In this case the return value is just empty. This is highly irritating because: 1. The calculation effort (in this example do_something()) is not a problem. By using echo count($result).' - '.strlen($str)."\n" I can see that the loop finishes properly. There is no web server or php error shown. 2. The memory_limit is also not a problem. I am working with more data on other parts of the application. It appears that the problem lies in return $str itself. If I am using return substr($str, 0, 980000) then it just works fine. I can't put those exceeding return value strings into another string variable. But I am able to do a strlen() to get a proper result (1310307). But I can't use them properly as a string. Using an echo $str in the function works properly. But return doesn't. Test script: --------------- function what_is_going_on($result){ $resultcount = count($result); for($i=0; $i<$resultcount; ++$i){ $row = $result[$i]; $line = do_something($row); $str.= $line; unset($result[$i]); } return $str; } $output = what_is_going_on($result); echo $output; ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=77655&edit=1

« previous php.bugs (#219700) next »