我想從一個PHP腳本如何執行從PHP腳本外殼
scrapy crawl example -a siteid=100
我想這執行此命令:
<?php
$id = 100;
exec('scrapy crawl example -a siteid= $id' $output, $ret_code);
?>
我想從一個PHP腳本如何執行從PHP腳本外殼
scrapy crawl example -a siteid=100
我想這執行此命令:
<?php
$id = 100;
exec('scrapy crawl example -a siteid= $id' $output, $ret_code);
?>
根據您是否需要腳本的輸出有不同的方法。
exec
執行命令並返回輸出給調用者。
passthru
當Unix命令的輸出是需要直接傳回給瀏覽器的二進制數據時,函數應該用來代替exec。
system
執行外部程序並顯示輸出,但只顯示最後一行。
popen
- 創建一個新的過程,是單向的讀/寫
proc_open
- 創建一個支持雙向讀/寫
爲了您scrapy劇本我會用一個新的進程popen
和pclose
的組合,因爲我不認爲你需要腳本輸出。
pclose(popen("scrapy crawl example -a siteid=$id > /dev/null &", 'r'));
$output = shell_exec('ls -lart');
echo "<pre>$output</pre>";
所以在總之,有一個本地的PHP命令來做你想做的事情。你也可以谷歌exec()
這是一個相似的功能。
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'));
希望這會有所幫助。
試試這個:
<?php
$id = 100;
exec('scrapy crawl example -a siteid=$id 2>&1', $output);
return $output;
?>
你真的需要爲了得到它重定向輸出。
如果你不需要輸出,只是執行命令,你只需要在第一部分中,像這樣:
exec('scrapy crawl example -a siteid=' . $id);
,因爲你不把參數裏面的「」,你把它放在外面,閱讀PHP中的文本concat。
這個命令運行scrapy抓取示例-a siteid = 100'沒有php? –
@Abhishekgurjar是 – parik
你是否看到空白屏幕? –