|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2021-07-27 14:04 UTC] cmb@php.net
-Package: Streams related
+Package: Scripting Engine problem
[2021-07-27 14:04 UTC] cmb@php.net
[2021-08-11 11:53 UTC] cmb@php.net
-Status: Open
+Status: Duplicate
-Assigned To:
+Assigned To: cmb
[2021-08-11 11:53 UTC] cmb@php.net
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sun Nov 02 03:00:01 2025 UTC |
Description: ------------ Working on a socket server, I had wondered what would happen when the resource id would reach 31 bits long, so I used the code below to test it. Inevitably it failed at 2147483647. A proactive solution would be for it to wrap once it reaches its limit, of course checking to see if the resource is already assigned. An alternative would be to reuse freed resource ids but I can already see many bad programmers who would be scared by that option. Test script: --------------- <?php for ($i = 0; $i < 5000000000; $i ++) { $fp = fopen("/dev/null", "w"); if (($i % 500000) == 0) { var_dump($fp); system("date"); } // if fclose($fp); } // for ?> Expected result: ---------------- Keep running as there are actually no resources in use. Actual result: -------------- It starts giving errors when it exceeds 31 bits on my 32 bit system.