2016-06-17 200 views
0

我想從一個PHP腳本如何執行從PHP腳本外殼

scrapy crawl example -a siteid=100 

我想這執行此命令:

<?php 
$id = 100; 
exec('scrapy crawl example -a siteid= $id' $output, $ret_code); 
?> 
+0

這個命令運行scrapy抓取示例-a siteid = 100'沒有php? –

+0

@Abhishekgurjar是 – parik

+0

你是否看到空白屏幕? –

回答

1

根據您是否需要腳本的輸出有不同的方法。

  • exec執行命令並返回輸出給調用者。

  • passthru當Unix命令的輸出是需要直接傳回給瀏覽器的二進制數據時,函數應該用來代替exec。

  • system執行外部程序並顯示輸出,但只顯示最後一行。

  • popen - 創建一個新的過程,是單向的讀/寫

  • proc_open - 創建一個支持雙向讀/寫

爲了您scrapy劇本我會用一個新的進程popenpclose的組合,因爲我不認爲你需要腳本輸出。

pclose(popen("scrapy crawl example -a siteid=$id > /dev/null &", 'r')); 
0

PHP Manual - shell_exec()

$output = shell_exec('ls -lart'); 
echo "<pre>$output</pre>"; 

所以在總之,有一個本地的PHP命令來做你想做的事情。你也可以谷歌exec()這是一個相似的功能。

0

phpseclib - 從http://phpseclib.sourceforge.net/下載並將其包括在您的項目。

include('Net/SSH2.php'); 

$ssh = new Net_SSH2("Your IP Here"); 
if (!$ssh->login('Your User', 'Your Password')) { 
    exit('Login Failed'); 
} 
$id = 100; 
echo "<pre>"; 
print_r($ssh->exec('scrapy crawl example -a siteid= $id')); 

希望這會有所幫助。

2

試試這個:

<?php 
$id = 100; 
exec('scrapy crawl example -a siteid=$id 2>&1', $output); 
return $output; 
?> 

你真的需要爲了得到它重定向輸出。

如果你不需要輸出,只是執行命令,你只需要在第一部分中,像這樣:

exec('scrapy crawl example -a siteid=' . $id); 

,因爲你不把參數裏面的「」,你把它放在外面,閱讀PHP中的文本concat。