如何从PHP重新启动memcached

如何从PHP重新启动memcached,php,memcached,centos,Php,Memcached,Centos,我用centos托管vps。这个服务器上有Apache、PHP和MySql。 我安装了memcached。 有时(3-4天一次)memcached会停止——我不知道为什么,日志文件中缺少必要的信息 我找到了解决方案——每10分钟运行一次cron,当memcached已经崩溃时,cron会验证memcached是否启动(通过命令memcached tool)- 我发送电子邮件并通过服务器命令行start memv=cached 但我会自动启动memcached,但我不能这么做 我试着这么做 sys

我用centos托管vps。这个服务器上有Apache、PHP和MySql。 我安装了memcached。 有时(3-4天一次)memcached会停止——我不知道为什么,日志文件中缺少必要的信息

我找到了解决方案——每10分钟运行一次cron,当memcached已经崩溃时,cron会验证memcached是否启动(通过命令memcached tool)- 我发送电子邮件并通过服务器命令行start memv=cached

但我会自动启动memcached,但我不能这么做

我试着这么做

system("/etc/init.d/memcached start");
exec("service memcached start");
system("service memcached start");

但我没有结果。

在杀死并启动memcached之前,您应该使用sudo将php升级到root,否则您将获得拒绝的权限


另外,尝试检查memcached崩溃的原因,而不是重新启动它

您可能需要使用sudo。不允许运行apache的用户运行init脚本本身

system("sudo /etc/init.d/memcached start");
可能已经允许apache用户使用sudo。这是通过visudo命令完成的


但老实说,最好使用monit之类的工具来自动化“看门狗”角色。它是为它设计的

我只想指出,为这样的事情创建一个实际的cronjob要安全得多

请在此处阅读有关
exec()
函数的更多信息:

此外,如果启用了
safe\u mode
,您将无法在
safe\u mode\u exec\u dir
之外执行命令。这些是在
php.ini
或自定义php配置中设置的


正如另一位回答者所指出的,最好是找出事故原因,而不是反复启动。当memcached崩溃时,您会遇到什么样的错误?显然你有办法知道它崩溃了,否则你就不会问这个问题了。最明显的答案可能是缓存已满,并且您的脚本对缓存的影响太大/太频繁,无法将其分页。

我通过visudo更改了sudoers,但我得到了相同的结果。这对我也不起作用,可能是因为安全模式已打开,我需要检查。我通过visudo更改了sudoers,但我得到了相同的结果。我不理解正确的方法是查找导致memcached崩溃的原因,但我的日志文件是空的。下面是memcached config PORT=“11211”USER=“memcached”MAXCONN=“2048”CACHESIZE=“1000”OPTIONS=“/LOGFILE=“/var/log/memcached.log”gsgsgsdmemcached不好!trie rnning root php user或chnge php usr到root进行工作!