2012-09-29 56 views
0

可能重複:
Call another PHP script and return control to user before the other script completes
How to run a PHP script asynchronously from a another PHP script?PHP EXEC問題

我對使用EXEC()在PHP中的一些問題,但我不知道去解決它。 我想使用exec()來異步執行同一個目錄中的另一個php腳本。 我在瀏覽器中打開a.php來調用b.php,但它不起作用。 (本地主機是XAMPP上視窗7

a.php只會:

<?php 
exec('php \b.php', $output, $r); 
print_r($output); 
print_r($r); 
?> 

b.php:

#!/usr/bin/php 
<?php 
echo time(); 
?> 

在瀏覽器上的輸出

Array () 1 

我超級初學者使用相關的PHP CLI ...我不知道這個... 任何人都可以舉一些簡單的例子嗎?例如,應該寫在a.php和b.php中。

非常感謝,如果你能給我一些指導或建議!


編輯:

我嘗試下面的代碼和它的作品,但它不運行「異步」 ...我如何可以將輸出重定向?

在瀏覽器中打開callexec.php。

callexec.php

<?php 
exec('C:\xampp\php\php.exe testexec.php'); 
?> 

testexec.php再次

<?php 
echo "start: ",time(),"\n"; 
sleep(10); 
echo "\n"; 
echo "end: ",time(),"\n"; 
?> 

感謝。

+0

爲什麼'b.php'之前有反斜槓?你是否啓用了error_reporting? 'php'真的在PATH中嗎? – mario

+0

如果一個程序以這個函數啓動,爲了繼續在後臺運行,程序的輸出必須被重定向到一個文件或另一個輸出流。我想問如何將輸出重定向到文件或其他輸出流? – Timespace7

回答

1

因爲你已經告訴你的shell腳本,它是一個PHP腳本#!/usr/bin/php,你不需要調用PHP爲你的腳本,你可以這樣調用它的命令行的任何腳本:

exec('b.php', $output, $r); 

順便說一句,我假設你可以從命令行調用b.php沒有任何問題。

0

如果在同一平臺上有另一臺服務器,則端口號可能有問題。例如,它可能是一個oracle數據庫服務器,mysql,Apache tomcat等。請確認不同服務器的端口號是否相同。

0

爲什麼使事情變得複雜?只需使用包含或要求?