我有一個長時間運行的perl腳本,輸出完成百分比。如何在php頁面上實時顯示完成狀態?如何從php監控perl腳本
實施例:
的Perl:
my $i = 0;
for $i (1 .. 6) {
print "$i\n";
sleep 1;
}
print "script end\n";
exit;
PHP:
echo passthru('perl testprint.pl');
這工作以顯示輸出,而不是實時的。
我有一個長時間運行的perl腳本,輸出完成百分比。如何在php頁面上實時顯示完成狀態?如何從php監控perl腳本
實施例:
的Perl:
my $i = 0;
for $i (1 .. 6) {
print "$i\n";
sleep 1;
}
print "script end\n";
exit;
PHP:
echo passthru('perl testprint.pl');
這工作以顯示輸出,而不是實時的。
修改您的perl腳本以將輸出傳輸到平面文件。使用php腳本來解析這個文件並以你想要的任何格式輸出。
您可以使用ajax從您的html頁面調用php腳本,或者如果您將perl腳本保存在服務器的CGI目錄中,則可以直接調用它,而不需要額外的php文件。
最後,創建一個漂亮的進度條和利潤。
我認爲你正指着我走向正確的方向。但是proc_open會更好用嗎? – Isius 2012-02-23 20:49:32
我對這個功能並不熟悉,但是如果在可公開訪問的網站或共享主機服務器上執行它似乎是危險的。也許用這個建議來更新你的問題,而另外一些更有知識的人可以參與進來? – 2012-02-23 22:29:38
爲此,您需要使用AJAX。
我會看看狀態的PHP腳本,然後讓AJAX更新用戶可以看到的狀態。
好的,但是如何在不重新執行腳本的情況下監視狀態? – Isius 2012-02-23 20:02:13
在這種情況下,您需要使用Perl腳本爲瀏覽器創建一個套接字並保持連接打開以便進一步更新。 PHP不具備在不佔用服務器資源的情況下執行此操作的能力。 – 2012-02-23 20:04:04
它是如何輸出的?每行有新的百分比?用舊的百分比來回避它永遠不會被解析的想法? – jordanm 2012-02-23 20:01:35
perl腳本當前每行輸出一個新的百分比。不過,如果有必要,我可以重寫它。 – Isius 2012-02-23 20:03:22
將perl轉換爲php。曾經有人知道PHP更好:-) – 2012-02-23 20:08:24