【问题标题】:php page starts bash script to run in the background and not timeoutphp页面启动bash脚本在后台运行而不是超时
【发布时间】:2013-07-30 21:52:37
【问题描述】:

我之前在这里看到过这个问题,所以我很抱歉重复了,但我仍然没有找到我的问题的答案。

我有一个 bash 脚本需要一段时间才能运行。它需要传递用户在网页上设置的变量(不用担心会有大量的安全验证等)

我可以让 bash 文件启动,但它可能会在 20 秒后从网页运行时死掉。

从终端运行时.. 运行得很好。

好的,我有以下内容:

$bashFile = shell_exec('./CoinCreationBashFile.sh "'.$coinName.'" "'.$coinNameAbreviation.'" "'.$blockReward.'" "'.$blockSpacing.'" "'.$targetTimespan.'" "'.$totalCoins.'" "'.$firstBitAddy.'" "'.$seedNode.'" "'.$seedName.'" "'.$headline.'" ');

现在这会执行 bash 文件,但我阅读了有关 Shell_exec php with nohup 的信息并得出以下结论:

$bashFile = shell_exec('nohup ./CoinCreationBashFile.sh "'.$coinName.'" "'.$coinNameAbreviation.'" "'.$blockReward.'" "'.$blockSpacing.'" "'.$targetTimespan.'" "'.$totalCoins.'" "'.$firstBitAddy.'" "'.$seedNode.'" "'.$seedName.'" "'.$headline.'" >/dev/null 2>&1 &');

但这很快就死了:(

因此,请阅读有关 set_time_limit 和 max_execution_time 的信息,并在 php.ini 文件中将它们设置为 10000000 之类的......但仍然没有乐趣 :(

只想运行一个 bash 脚本而不会超时和退出。真的不想在其中放置一个中间步骤,但有人建议我查看 ZeroMQ 以“将工作人员与进程分离”,所以我可能不得不走这条路。

提前多谢

【问题讨论】:

    标签: php bash exec shell-exec


    【解决方案1】:

    如果脚本需要超过 60 秒,请不要尝试通过浏览器运行脚本,而是尝试使用 SSH 或作为 cronjob 运行。

    【讨论】:

    • 我可以从 php 页面将变量传递给 cronjob 吗?这没有用...stackoverflow.com/questions/4918982/…对此有任何答案吗?
    • 无法执行 cron 作业,因为我不想定期运行它...需要根据请求运行
    • 对于遇到这种情况的其他人,我的解决方法是让 php 页面将必要的变量写入一个通常为空目录中的小 .txt 文件。然后设置一个 cron 作业来检查这个目录是否包含一个文件。从 cron 作业中提取变量并以 root 身份运行脚本。一旦想通了,真的没有太多的工作。非常感谢 Ethan 的建议
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-07
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多