【问题标题】:How restart memcached from PHP如何从 PHP 重启 memcached
【发布时间】:2012-03-26 15:21:13
【问题描述】:

我有使用 centos 的 vps-hosting。在这台服务器上是 Apache、PHP、MySql。 我安装了内存缓存。 有时(3-4 天一次)memcached 停止 - 我不知道为什么,在日志文件中缺少必要的信息。

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

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

我试过这么命令

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

但我没有结果。

【问题讨论】:

  • memcached 不好!尝试 rnning root php 用户或 chnge php usr 到 root 工作吧!

标签: php memcached centos


【解决方案1】:

我只想指出,为这样的事情创建一个实际的 cronjob 会更安全。

请在此处阅读有关exec() 功能的更多信息:http://php.net/manual/en/function.exec.php

此外,如果safe_mode 处于打开状态,您将无法在safe_mode_exec_dir 之外执行命令。这些设置在 php.ini 或自定义 php 配置中。

正如另一位回答者所指出的,最好隔离崩溃的原因,而不是重复启动它。当 memcached 崩溃时,您会遇到什么样的错误?显然你有某种方式知道它已经崩溃,否则你不会问这个问题。最明显的答案可能是缓存已填满,而您的脚本对缓存的访问太重/经常无法分页。

【讨论】:

    【解决方案2】:

    在杀死和启动 memcached 之前,您应该使用 sudo 使 php 升级为 root,否则您将获得权限。

    附:尝试检查为什么 memcached 崩溃而不是重新启动它!

    【讨论】:

    • 我通过 visudo 更改了 sudoers,但结果相同。我不明白正确的方法是找到导致 memcached 崩溃的原因,但我的日志文件是空的。下面是 memcached 配置 PORT="11211" USER="memcached" MAXCONN="2048" CACHESIZE="1000" OPTIONS="" LOGFILE="/var/log/memcached.log" gsgsd
    【解决方案3】:

    您可能需要使用 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/

    【讨论】:

    • 我通过visudo改了sudoers,结果还是一样。
    • 它对我也不起作用可能是因为安全模式已打开,但我需要检查。
    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2011-12-13
    • 2014-07-14
    • 2022-07-21
    相关资源
    最近更新 更多