【问题标题】:shell command to restart an php program [closed]用于重新启动 php 程序的 shell 命令 [关闭]
【发布时间】:2010-08-01 14:40:17
【问题描述】:

当程序的内存超过 500mb 时,我需要重新启动我的 php 程序。 可以通过php或shell中的任何脚本来完成吗?

【问题讨论】:

  • 这是 Windows shell 还是 Bash 或 ksh 之类的东西?
  • 这是解决内存泄漏问题的技巧吗?
  • 正确的操作确实会释放内存,以便保持在 500MB 以下,无需重新启动。

标签: php shell


【解决方案1】:

像这样运行你的 PHP 脚本:

php -d "memory_limit=500M" myscript.php

永远做下去:

while true; do php -d "memory_limit=500M" myscript.php; done

【讨论】:

  • 嘿...好技巧 :) 我会为此使用守护进程...
  • 我写了一个 shell 脚本 start.sh 像这样 php -d "memory_limit=500M" myscript.php while true;做 php -d "memory_limit=500M" myscript.php;一旦我运行程序就完成了,我得到了分段错误错误....
  • @Ram,脚本应该只包含第二行。我只是在回答中展示了解决方案的自然进展。我不明白你会如何得到段错误;这将是您可能想要报告的 PHP 错误。 (您通常如何执行 PHP 脚本?)
  • @strager ,它没有重新启动程序内存仍在增加....如果我使用 "while true; do php -d "memory_limit=500M" myscript.php; done"
  • 您的 PHP 脚本如何如此迅速地达到 500 MB 的内存使用量?
【解决方案2】:

每当我处理长时间运行的程序时,我喜欢包含一些基本工具来检查它们是否处于活动状态、它们正在创建什么错误等。这是我使用 cron 运行的一个快速脚本,以确保我的齿轮工工作人员是正在运行。

$program = 'program.php';  

// Run the cmd to get list of running programs  
exec( "ps aux | grep $program | awk '{print $12}'", $output );  

if( count($output) == 0 )  
    exec( "php $program > /dev/null &" );

当然,您可能不希望将脚本的输出发送到 /dev/null。事实上,如果您遇到内存使用问题,您可能希望使用 >> 运算符在临时日志中捕获脚本的输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 2013-01-01
    • 2011-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多