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執行完畢就重新整理?嘗試在被執行的指令後面加個 但並...