我有副总裁-和centos一起主持。在这台服务器上有Apache,PHP,MySql。我安装了memcached。有时( 3-4天) memcached停止-我不知道为什么,在日志文件中缺少必要的信息。
我找到了解决方案--每10分钟运行一次cron,以验证memcached是否启动(通过memcached -tool命令),当memcached已经崩溃时-我发送电子邮件,并通过服务器命令行启动memv=cached
但是我会自动启动memcached,但我不能这样做。
我试过了,命令
system("/etc/init.d/memcached start");
exec("service memcached start");
system("service memcached start");但是我没有结果。
发布于 2012-03-26 23:29:48
我只想指出,为这样的事情创建一个实际的cronjob要安全得多。
请在此处阅读有关exec()函数的更多信息:http://php.net/manual/en/function.exec.php
此外,如果safe_mode处于打开状态,您将无法在safe_mode_exec_dir之外执行命令。这些都是在php.ini或自定义php配置中设置的。
正如另一个回答者所指出的,隔离崩溃的原因而不是重复启动它会更好。当memcached崩溃时,你会得到什么类型的错误?显然你有办法知道它已经崩溃了,否则你就不会问这个问题了。最明显的答案可能是缓存已经满了,你的脚本对缓存的访问太重了/经常导致它无法换出页面。
发布于 2012-03-26 23:24:15
在终止和启动memcached之前,你应该使用sudo让php升级到root,否则你会得到权限限制。
另外,尝试检查memcached崩溃的原因,而不是重新启动它!!
发布于 2012-03-26 23:24:47
您可能需要使用sudo。运行apache的用户不允许运行init脚本本身。
system("sudo /etc/init.d/memcached start");可能会使apache用户能够使用sudo。这是通过visudo命令完成的。http://www.gratisoft.us/sudo/visudo.man.html
但老实说,最好是使用类似monit的东西来自动化“看门狗”的角色。它是为它而设计的。http://mmonit.com/monit/
https://stackoverflow.com/questions/9874877
复制相似问题