|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #50737 stream_set_blocking creates high cpu usage
Submitted: 2010-01-13 09:58 UTC Modified: 2010-01-28 08:44 UTC
From: jason at lentink dot net Assigned:
Status: Not a bug Package: Streams related
PHP Version: 5.2.12 OS: Linux
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: jason at lentink dot net
New email:
PHP Version: OS:


 [2010-01-13 09:58 UTC] jason at lentink dot net
When using stream_set_blocking on a stream will create a huge load on 
cpu. When using this function it uses up to 50% of the cpu. When not 
using this function it will only use 0.1% cpu usage.

Reproduce code:
$this->_socket = fsockopen($str, $port, $errno, $errstr);
stream_set_blocking($this->_socket, 0); // non blocking

Expected result:
An socket which will be opened fast. in a non-blocking mode.

Actual result:
An open socket. But the cpu use is enormous.


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2010-01-13 12:07 UTC]
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves. 

A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external 
resources such as databases, etc. If the script requires a 
database to demonstrate the issue, please make sure it creates 
all necessary tables, stored procedures etc.

Please avoid embedding huge scripts into the report.

 [2010-01-14 12:13 UTC] jason at lentink dot net
I could provide you guys with a small script
bug i can also point you to the place where the problem exists since 
it happens in Zend Framework.

The function is used at line 79. What i see on my servers is that when 
there are simultaneous request made to the same script the problem 
increases more rapidly.
 [2010-01-14 12:17 UTC]
I asked for small, complete script NOT for a framework.
 [2010-01-14 12:53 UTC] jason at lentink dot net
Whatever you want :)

Here is a complete undressed file which only has the problem.
 [2010-01-15 08:56 UTC]
Strike 3. As long as you can not provide a short reproducing script (like described in my first comment to this report) the bug is most likely something you did wrong.
 [2010-01-15 10:48 UTC] jason at lentink dot net
Then we go back to the first post and there is a 2 line example of the 

Reproduce code:
$socket = fsockopen("somehost", 631313, $errno, $errstr);
stream_set_blocking($socket, 0); // non blocking

this is enough to trigger the problem.
I hope this is short enough.
 [2010-01-28 08:44 UTC]
Stil a FAIL:

Warning: fsockopen(): php_network_getaddresses: getaddrinfo failed: Name or service not known 
 [2010-10-15 22:59 UTC] pdescham49 at gmail dot com
Wow. Nice thread, You'll go far in life with an attitude like that. I assume you are not being paid for this support. If you were my employee I would fire you on the spot.
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Sat Jul 13 19:01:30 2024 UTC