重新启动php程序的shell命令

重新启动php程序的shell命令,php,shell,Php,Shell,当程序内存超过500mb时,我需要重新启动php程序。 可以用php或shell中的任何脚本完成吗?像这样运行php脚本: php -d "memory_limit=500M" myscript.php 永远这样做: while true; do php -d "memory_limit=500M" myscript.php; done 每当我处理长时间运行的程序时,我喜欢包括一些基本工具,用于检查它们是否处于活动状态,它们正在创建什么错误,等等。下面是我使用cron运行的一个快速脚本,以确

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

像这样运行php脚本:

php -d "memory_limit=500M" myscript.php
永远这样做:

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

每当我处理长时间运行的程序时,我喜欢包括一些基本工具,用于检查它们是否处于活动状态,它们正在创建什么错误,等等。下面是我使用cron运行的一个快速脚本,以确保gearman workers正在运行

$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。事实上,如果您在内存使用方面遇到问题,您可能希望使用
>
操作符在临时日志中捕获脚本的输出。

这是Windows shell还是类似于Bash或ksh的东西?这是一种绕过内存泄漏的方法吗?正确的操作确实是释放内存,以便保持在500MB以下,无需重新启动。呵呵。。。很好的技巧:)我会使用守护进程来实现这一点……我已经编写了一个shell脚本start.sh,比如php-d“memory_limit=500M”myscript.php,虽然为true;dophp-d“memory_limit=500M”myscript.php;一旦我运行程序,我就会得到分段错误。…@Ram,脚本应该只包含第二行。我只是在回答中展示了解决方案的自然进展。我不知道你怎么会犯错误;这可能是PHP中的一个bug,您可能需要报告它。(您通常如何执行PHP脚本?@strager,它没有重新启动程序,内存仍在增加。。。。如果我使用“while true;do php-d”memory_limit=500M“myscript.php;done”,您的php脚本是如何如此快速地达到500MB内存使用量的?