1
0
mirror of https://github.com/php/php-src.git synced 2026-04-04 22:52:40 +02:00
Anatol Belski 0c982798e0 Fixed bug #51800 proc_open on Windows hangs forever
This loop can block for some minutes, theoretically. Practially
however, this is a 99% non issue for a normal use case. This is
required because read() is synchronous. The PHP streams API wants
to fill its internal buffers, therefore it might try to read some
more data than user has demanded. Also, for a case where we want
to read X bytes, but neither enough data nor EOF arrives, read()
will block until it could fill the buffer. If a counterpart station
runs slowly or delivers not all the data at once, read() would
still be waiting. If we quit too early, we possibly could loose
some data from the pipe. Thus it has to emulate the read()
behaviour, but obviously not completely, just to some grade.

Reading big data amount is for sure an issue on any platforms, it
depends on the pipe buffer size, which is controlled by the system.
On Windows, the buffer size seems to be way too small, which causes
buffer congestion and a dead lock. It is essential to read the pipe
descriptors simultaneously and possibly in the same order as the
opposite writes them.

Thus, this will work with smaller buffer data sizes passed through
pipes. As MSDN states, anonymous pipes don't support asynchronous
operations. Neither anonymous pipes do support select() as they are
not SOCKETs but file descriptors. Consequently - bigger data sizes
will need a better solution based on threads. However it is much
more expencive. Maybe a better solution could be exporting a part
of the internal doing as a userspace function which could perform
some kind of lookahead operation on the pipe descriptor.

This is just the first stone, depending on the user feedback we
might go for further improvements in this area.
2014-09-29 16:24:34 +02:00
2014-01-03 11:06:16 +08:00
2010-04-26 23:53:30 +00:00
2014-09-27 02:17:52 +02:00
2014-07-07 10:34:43 -07:00
2014-02-24 10:12:50 +01:00
2014-09-20 21:46:25 +02:00
2012-10-02 00:02:08 +08:00
2014-01-23 21:34:57 -05:00
2014-07-07 10:34:43 -07:00
2013-02-26 14:35:47 +01:00
2013-05-21 13:27:45 +02:00
2014-06-16 23:27:45 +03:00
2014-06-18 00:11:55 +03:00
2009-11-23 21:53:30 +00:00
2014-01-21 13:25:23 -08:00
2004-02-08 22:49:47 +00:00
2014-01-26 17:20:12 -08:00
MFH
2008-01-17 14:38:16 +00:00
2013-10-27 16:40:37 -07:00
2014-06-05 17:45:22 +02:00
2014-08-17 15:44:02 +03:00
2009-07-13 16:10:29 +00:00

The PHP Interpreter

This is the github mirror of the official PHP repository located at http://git.php.net.

Build Status

Pull Requests

PHP accepts pull requests via github. Discussions are done on github, but depending on the topic can also be relayed to the official PHP developer mailinglist internals@lists.php.net.

New features require an RFC and must be accepted by the developers. See https://wiki.php.net/rfc and https://wiki.php.net/rfc/voting for more information on the process.

Bug fixes do not require an RFC, but require a bugtracker ticket. Always open a ticket at https://bugs.php.net and reference the bug id using #NNNNNN.

Fix #55371: get_magic_quotes_gpc() throws deprecation warning

After removing magic quotes, the get_magic_quotes_gpc function caused
a deprecate warning. get_magic_quotes_gpc can be used to detected
the magic_quotes behavior and therefore should not raise a warning at any
time. The patch removes this warning

We do not merge pull requests directly on github. All PRs will be pulled and pushed through http://git.php.net.

Guidelines for contributors

Description
⚠️ ARCHIVED: Original GitHub repository no longer exists. Preserved as backup on 2026-01-22T16:25:23.756Z
Readme 936 MiB
Languages
C 66%
PHP 31.3%
C++ 0.8%
Shell 0.5%
M4 0.4%
Other 0.8%