PHP用POPEN非同步執行,碰見ECHO時會終止

2021-10-19 07:56:03 字數 742 閱讀 4634

php程式中,我們常用popen來非同步執行,但是如果非同步指令碼中有echo輸出,則會在此行終止。

下面舉例:

非同步執行run.php

<?php 

for($i=

0;$i<5;

$i++

)echo

"finish\r\n"

;

在命令列中執行指令碼

輸出正常。a.txt中內容也正常。

但是如果php中用popen來非同步執行,就會出現異常終止。

<?php 

pclose

(popen

("php run.php&"

,"r"))

;

執行後,a.txt中內容只有一行。

也就是在碰見第乙個echo的時候就終止了。如果注釋掉echo這一行,這指令碼可以順利非同步執行成功。

我想可能時popen開啟了乙個通道,如果有內容輸出時,而pclose又關閉了通道,因此非同步指令碼未能完全執行。

php學習筆記 popen 非同步呼叫

寫了一年的php後台,第一次在實踐中需要用到非同步程式設計。通過一晚上的搜尋,找到了乙個有效的非同步程式設計方法,即popen 該函式會建立乙個管道,所以不會對php造成阻塞。但非同步是有條件的,需要在command後面加上 表示後台執行,另外如果使用fread來讀取管道資料,將會造成程序阻塞。用法...

php 非同步執行

header host url array host r n http 1.1 host域不能省略 header connection close r n r n header connection close r n r n if empty post data out connection cl...

PHP非同步執行問題

php在執行exec 方法時,會等待exec方法完全執行完之後才會繼續執行其餘 而exec 會執行很長時間,這樣的話頁面就會一直處於等待狀態,等exec執行完之後才會重新整理,所以有沒有某種方法可以使exec在後台執行的同時,讓頁面不用等待exec執行完畢就重新整理?嘗試在被執行的指令後面加個 但並...