0

我有一个执行 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,从中检索逗号分隔的字符串并处理它,将其拆分为数组并插入另一个表。main函数完成后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);

?>
4

1 回答 1

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
于 2012-11-14T23:24:10.797 回答