PHP V5 开发多任务应用程序(4)_PHP应用_黑客防线网安服务器维护基地--Powered by WWW.RONGSEN.COM.CN

PHP V5 开发多任务应用程序(4)

作者:黑客防线网安PHP维护基地 来源:黑客防线网安PHP维护基地 浏览次数:0

黑客防线网安网讯:  。但是,由于我发现到处都没有对它的精确记录,因此需要在这里包括用于此类加速的模型。  清单 5. 延迟服务器实现<?phpecho "Program starts at ". date('h:i:s') . ".\n";$ti...

  但是由于我发现到处都没有对它的精确记录因此需要在这里包括用于此类加速的模型

  清单 5. 延迟服务器实现

<?php
echo "Program starts at ". date('h:i:s') . ".\n";

$timeout=10;
$streams=array();
$handles=array();

/* First launch a program with a delay of three seconds, then
one which returns after only one second. */
$delay=3;
for ($id=0; $id <= 1; $id++) {
 $error_log="/tmp/error" . $id . ".txt"
 $descriptorspec=array(
  0 => array("pipe", "r"),
  1 => array("pipe", "w"),
  2 => array("file", $error_log, "w")
 );
 $cmd='sleep ' . $delay . '; echo "Finished with delay of ' .
 $delay . '".';
 $handles[$id]=proc_open($cmd, $descriptorspec, $pipes);
 $streams[$id]=$pipes[1];
 $all_pipes[$id]=$pipes;
 $delay -= 2;
}

while (count($streams)) {
 $read=$streams;
 stream_select($read, $w=null, $e=null, $timeout);
 foreach ($read as $r) {
  $id=array_search($r, $strea**ms);
  echo stream_get_contents($all_pipes[$id][1]);
  if (feof($r)) {
   fclose($all_pipes[$id][0]);
   fclose($all_pipes[$id][1]);
   $return_value=proc_close($handles[$id]);
   unset($streams[$id]);
  }
 }
}
?>

  此程序将生成如下输出:

Program starts at 10:28:41.
Finished with delay of 1.
Finished with delay of 3.

  这里的关键在于 PHP 启动了两个独立子进程,取回待完成的第一个进程的输出,然后取回第二个进程的输出,即使后者启动得较早。如果主机是多处理器计算机,并且操作系统已正确配置,则操作系统本身负责将各个子程序分配给不同的处理器。这是在多处理器主机中良好应用 PHP 的一种方法。

  PHP 支持多任务。PHP 不按照诸如 Java 编程语言或 C++ 等其他语言所采用的方法支持线程,但是以上示例表明 PHP 具有更多的超乎想象的加速潜力。

    黑客防线网安服务器维护方案本篇连接:http://www.rongsen.com.cn/show-13904-1.html
网站维护教程更新时间:2012-03-30 05:03:22  【打印此页】  【关闭
我要申请本站N点 | 黑客防线官网 |  
专业服务器维护及网站维护手工安全搭建环境,网站安全加固服务。黑客防线网安服务器维护基地招商进行中!QQ:29769479

footer  footer  footer  footer