我有一个执行php脚本的bash脚本。我的bash知识很差,我需要执行该PHP脚本大约一百次。我只是复制粘贴执行行:
#!/bin/bash
php /home/me/public_html/script/stats.php 1 2 3
php /home/me/public_html/script/stats.php 1 2 3
php /home/me/public_html/script/stats.php 1 2 3
...
1,2,3是我传递给php脚本的参数。
一切正常,但在第8行bash脚本挂起后不再执行下一步。所以我必须重新启动它。
有什么不对?
UPD
PHP(不完整的脚本,但一般的想法)
首先检索命令行参数。将它们传递给在msql查询中使用它们的函数。 msql查询的每个结果都传递给另一个函数,该函数使用该结果形成一个url,从中检索逗号分隔的字符串并处理它将其拆分为数组并插入另一个表。主函数完成后,msql链接关闭,脚本退出。
<?php
if (($argv[1] > 0) && ($argv[2] > 0) && ($argv[3] > 0)) {
echo "All good! Here we go: ";
echo "\n";
gatherstats($argv[1],$argv[2],$argv[3]);
} else {
echo "no\n";
}
function gatherstats($y,$m,$cl){
Require 'db.php';
// SQL QUERY HERE AND A LOOP TO PROCESS RESULTS
//CALLS UP NEXT FUNCTION FOR EACH RESULT
crawl($a,$b,$c);
}
function crawl($atr,$year,$month) {
//forms up specific url from passed vars and processes it
}
mysqli_close($link);
?>
答案 0 :(得分:1)
也许第8个php脚本调用由于某种原因而挂起。您可以这样做以避免输入命令100次:
for i in {1..100}; do
php /home/me/public_html/script/stats.php 1 2 3 > some_log_file_$i.log
done
在PHP脚本中添加一些打印语句,并检查日志中的8号调用,看看发生了什么。如果要求不是停止调用(即使一个失败),那么您可以使用
使脚本调用异步for i in {1..100}; do
php /home/me/public_html/script/stats.php 1 2 3 > some_log_file_$i.log &
done