Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP的pthreads在Apache中不执行并行线程_Php_Pthreads_Pthreads Win32 - Fatal编程技术网

PHP的pthreads在Apache中不执行并行线程

PHP的pthreads在Apache中不执行并行线程,php,pthreads,pthreads-win32,Php,Pthreads,Pthreads Win32,我正在使用PHP的扩展。当我在Windows上从cmd执行PHP脚本时,我会得到并行线程,但当我从Apache调用相同的脚本时,我会得到不同的结果,在我看来,这就像是单线程执行 我是否应该为Apache进行任何配置以获得类似cmd(并行)的响应 在web浏览器中: Yoo World ---------- Yoo World ---------- Yoo World ---------- Yoo World ---------- ... Yoo Second ------------------

我正在使用PHP的扩展。当我在Windows上从
cmd
执行PHP脚本时,我会得到并行线程,但当我从Apache调用相同的脚本时,我会得到不同的结果,在我看来,这就像是单线程执行

我是否应该为Apache进行任何配置以获得类似
cmd
(并行)的响应

在web浏览器中:

Yoo World ----------
Yoo World ----------
Yoo World ----------
Yoo World ----------
...
Yoo Second -------------------------
Yoo Second -------------------------
Yoo Second -------------------------
Yoo Second -------------------------
...
Standard 
Standard 
Standard 
Standard 
...

更新:在不同的浏览器上我得到不同的结果;这个问题可能与缓冲区有关,我将对此进行调查。

没有任何东西是模拟的,您正在执行真正的线程

您不应该在SAPI模式下编写线程的标准输出,您将遇到无法控制的意外行为和错误,有太多的环境和SAPI无法很好地覆盖它,因此根本没有覆盖它,不要这样做


即使在CLI模式下,复杂代码的输出也会被篡改,为了解决这个问题,您可以在传递给所有上下文的任何对象中定义一个受保护的方法,该对象负责编写标准输出,如果该方法受保护,并且该对象是pthreads对象,则一次只能有一个上下文编写标准输出。。。通过将标准输出替换为日志数据库,可以在SAPI环境中使用相同的对象…

您是否尝试在每个异步操作中设置1秒睡眠?结果非常相同。您希望混合字符串输出是什么?然后在线程函数中拆分字符串,输出第一个字符串,然后休眠几毫秒,然后输出第二个字符串。`public function run(){if($this->arg){$strings=explode('',$this->arg);for($i=0;$i<5;$i++){echo$strings[0].
\n';usleep(100000)//100ms echo$strings[1].
\n';}}}}`用休眠测试;它不起作用。显然,PHP/extension无法模拟并行性。i、 e线程调度!你有没有任何示例代码,我可以看到如何准确地做到这一点?我的意思是,如果有好的实践主题,我想读它们。包含一个使用受保护的方法同步控制台输出的示例,pthreads的发行版中包含了许多示例,涵盖了各种主题。@EmrahMehmedov您还可以将结果放入stackable,并使用print_r查看每个步骤的处理方式。。。。没有什么是模拟的
Yoo World ----------<br>
Yoo World ----------<br>
Yoo World ----------<br>
Standard <br>
Standard <br>
Yoo World ----------<br>
Yoo Second -------------------------<br>
Standard <br>
Standard <br>
Yoo World ----------
Yoo World ----------
Yoo World ----------
Yoo World ----------
...
Yoo Second -------------------------
Yoo Second -------------------------
Yoo Second -------------------------
Yoo Second -------------------------
...
Standard 
Standard 
Standard 
Standard 
...