【问题标题】:Drupal cron vs PHP background taskDrupal cron vs PHP 后台任务
【发布时间】:2014-01-11 20:24:49
【问题描述】:

我有一个 Drupal 7 站点,其中包含一些使用 Drupal API 的非 Drupal Web 服务。
我需要保存一个全局数组,其中包含我需要每分钟更新的一些值,这些值可用于每次调用 Web 服务。
我是DrupalPHP 的新手,我想知道是否应该使用纯PHP 之类的:

 while(true){
        doSomething();
        sleep(60);
    }

还是 Drupal cron 或其他?

【问题讨论】:

    标签: php web-services drupal-7 cron


    【解决方案1】:

    是的,您应该使用 Drupal 的 Cron。您提供的链接中有一个指向comprehensive setup video for Drupal's Cron 的链接。在无限循环中使用sleep() 是一个坏主意,因为如果您在共享托管服务器上,例如 GoDaddy,可以运行的并发进程数是有限的。因此,如果 20 个用户正在向您的服务器发送请求并且 20 个 PHP 进程正在休眠,则可能会导致您的服务器崩溃(即 HTTP 50x 错误)。

    使用 Cron,您可以将所需的数据保存在由 Cron 更新的文件中,并在您的 PHP 脚本中同时访问该文件(多个 PHP 进程)。

    【讨论】:

    • 这确保我这个任务只运行一次并且可以从我的外部 PHP 页面访问(它们位于我的 Drupal 根文件夹下)?
    • 仅将其存储在数据库中并配置您的服务器以使用 cronjob 每 60 秒更新一次它不是更快/资源友好/磁盘 io 友好吗?
    • @NickF 正确。该任务只能在通过 Cron 指定的时间间隔内运行一次。只要权限设置正确,运行在同一台服务器上的任何脚本都可以访问该文件。
    • 我如何访问该变量? (姑且称之为 $x)
    • @Anyone 它可以很容易地存储在数据库中,具体取决于它是什么类型的数据。我认为唯一的优势是便携性/备份。数据库实际上使用文件系统上的文件,并且必须为 MySQL 中的新表创建 3 个我相信的文件? Web 浏览器会负责缓存它,这会削弱 MySQL 的缓存优势。
    猜你喜欢
    • 2017-03-23
    • 2019-06-05
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2011-09-15
    相关资源
    最近更新 更多