note 53538 added to function.trim
| From: | okumurya at hotmail dot com | Date: | Sun, 05 Jun 2005 11:01:57 +0000 |
| Subject: | note 53538 added to function.trim | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-89941@lists.php.net to get a copy of this message | ||
fread/fwrite blocks program when no data available.
so, you consider use select system call.
following is example.
<?php
/**
*
* write/read pipe
*
* @param resource $w_fp write file handle
* @param resource $r_fp read file handle
* @param string $input
* @return string
*/
function _writeread_pipe(&$w_fp, &$r_fp, $input) {
$output = '';
$write_bytes = 0;
//
while (True) {
if (!isset($r_fp) && !isset($w_fp)) break;
$read = isset($r_fp) ? array($r_fp) : Null;
$write = isset($w_fp) ? array($w_fp) : Null;
// select pipes
$r = stream_select($read,
$write,
$except = Null,
30
);
if ($r === False) {
return PEAR::raiseError('process timeout');
}
// read pipe
if (isset($read) && isset($read[0])) {
do {
$buf = fread($r_fp, 1024);
if (strlen($buf) == 0) {
fclose($r_fp);
$r_fp = Null;
break;
}
$output .= $buf;
} while (True);
}
// write pipe
if (isset($write) && isset($write[0])) {
$r = fwrite($w_fp, substr($input, $write_bytes));
if ($r === False) {
return PEAR::raiseError('process write error');
}
$write_bytes += $r;
if ($write_bytes == strlen($input)) {
fclose($w_fp);
$w_fp = Null;
}
}
}
return $output;
}
?>
----
Manual Page -- http://www.php.net/manual/en/function.trim.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+53538
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+53538&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+53538&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+53538&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+53538&report=yes&reason=useless
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+53538&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+53538&report=yes
Search -- http://master.php.net/manage/user-notes.php