本文目錄一覽:
- 1、PHP定義了腳本執行時間無限並定義了用戶退出瀏覽器腳本繼續執行做了個死循環為啥過一段時間後循環停了?
- 2、PHP如何持續執行一個函數?
- 3、php如何順序執行,即等待一段代碼完全執行完畢後再執行後面的代碼
- 4、php命令行執行了PHP循環程序,然後退出登陸。下次連接的時候如關閉這個PHP循環腳本?
- 5、PHP函數如何執行一半停幾秒繼續執行直到結束?
- 6、php exit後退出當前程序,如何繼續執行下面另外的腳本
PHP定義了腳本執行時間無限並定義了用戶退出瀏覽器腳本繼續執行做了個死循環為啥過一段時間後循環停了?
因為PHP有個執行時間的問題,需要把時間設置成無限set_time_limit(0);應該就可以了
PHP如何持續執行一個函數?
PHP提供4個專門的執行外部命令的函數:exec(), system(), passthru(), shell_exec()
1)exec()
原型: string exec ( string $command [, array $output [, int $return_var ]] )
說明: exec執行系統外部命令時不會輸出結果,而是返回結果的最後一行。如果想得到結果,可以使用第二個參數,讓其輸出到指定的數組。此數組一個記錄代表輸出的一行。即如果輸出結果有20行,則這個數組就有20條記錄,所以如果需要反覆輸出調用不同系統外部命令的結果,最好在輸出每一條系統外部命令結果時清空這個數組unset($output),以防混亂。第三個參數用來取得命令執行的狀態碼,通常執行成功都是返回0。
?php
exec(“dir”,$output);
print_r($output);
?
2)system()
原型: string system ( string $command [, int $return_var ] )
說明: system和exec的區別在於,system在執行系統外部命令時,直接將結果輸出到遊覽器,如果執行命令成功則返回true,否則返回false。第二個參數與exec第三個參數含義一樣。
?php
system(“pwd”);
?
3)passthru()
原型: void passthru ( string $command [, int $return_var ] )
說明: passthru與system的區別,passthru直接將結果輸出到遊覽器,不返回任何值,且其可以輸出二進制,比如圖像數據。第二個參數可選,是狀態碼。
?php
header(“Content-type:image/gif”);
passthru(“/usr/bin/ppm2tiff /usr/share/tk8.4/demos/images/teapot.ppm”);
?
4)shell_exec()
原型: string shell_exec(string $cmd)
說明: 直接執行命令$cmd
?php
$output = shell_exec(‘ls -lart’);
echo “pre$output/pre”;
?
防超時的處理方法:
當執行命令的返回結果非常龐大時,可以需要考慮將返回結果輸出至其他文件,再另行讀取文件,這樣可以顯著提高程序執行的效率。
如果要執行的命令要花費很長的時間,那麼應該把這個命令放到系統的後台去運行。但在默認情況下,
象system()等函數要等到這個命令運行完才返回(實際上是在等命令的輸出結果),
這肯定會引起PHP腳本的超時。解決的辦法是把命令的輸出重定向到另外一個文件或流中,如:
?php
system(“/usr/local/bin/order_proc /tmp/abc “);
?
?
$filename=time().”.data”;
exec(“/app/gm/gm_center/test/hello.py $filename”,$output);
var_dump ($output);
?
php如何順序執行,即等待一段代碼完全執行完畢後再執行後面的代碼
你所謂的消耗時間是指多長?
如果你確定**這段程序在php允許的默認的30秒內,這段程序是完全可以執行完成,並順序執行的。
如果你的這段耗時程序超過了30秒,基本上不好實現了,如果超過這個限定,php會報錯退出。
如果大於30秒,你可以試試這樣做:
php.ini中的:
max_execution_time = 30
這個30是指秒,有效的最大時間是1000秒,再不能大了,再大的話也只限定在1000秒;
改了這個參數再試試。如果還大於1000秒?那你的程序也是不合實際了,基本無法實現。
php命令行執行了PHP循環程序,然後退出登陸。下次連接的時候如關閉這個PHP循環腳本?
介個…… 你設定一下關閉循環的條件即可。或者你再用secureCRT連接服務,重啟PHP服務就關閉了
PHP函數如何執行一半停幾秒繼續執行直到結束?
你程序沒有問題,你想法是好的,但是網絡設計的初衷比較反對你這樣的需求,你的PHP程序在服務器上執行,服務器的WEB程序等你的程序執行完畢之後,再把結果通過網絡發送給訪問網絡的客戶端瀏覽器,所以瀏覽器只能感受到等了10秒後一下出來兩個時間。
如果需要在瀏覽器上延時,需要瀏覽器上使用JS等客戶端代碼進行處理,分開兩次調用PHP獲得結果。
php exit後退出當前程序,如何繼續執行下面另外的腳本
呵呵 這是不可能的,一個php文件就是一個腳本,只要執行了exit,將停止腳本解析,將所需的輸出.
所以,你要慎用exit.不是出錯造成的不可恢復狀態,基本不要用exit.
其實 你完全可以將你所謂的”程序1″修改成分支判斷,就是if/else,switch等語句替代exit完成的任務.
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/197436.html