【问题标题】:PHP Recurring OperationPHP 循环操作
【发布时间】:2013-08-15 14:39:30
【问题描述】:

对于 iOS 推送通知服务器,我正在实现一个 Web 服务,用于检查网络上特定价格的提要。

因此,我需要我的 PHP 不断检查价格(每 20 秒左右)并检查值。

我想知道(原谅我今天刚开始使用 PHP 的无知)人们这样做的方式是 cronjob 吗?或者是否有一些特殊的方法来触发一个运行直到它被杀死并重复任务的 php 脚本?

谢谢! 约翰

【问题讨论】:

  • cron 作业的最低频率是每分钟,20 秒内我会写一个守护进程。
  • 真的是这样吗?没有更简单的方法直接在 PHP 中?
  • 它可能以 50 种不同的方式完成。但是对于那个间隔,我会这样做。也许 php 不是适合这个的语言。
  • 谢谢你的信息,python还有什么可以用的?

标签: php ios cron apple-push-notifications


【解决方案1】:

这可以通过在您的服务器上设置一个 cron 作业来实现。

  1. 登录到您的虚拟主机,例如 cpanel 创建一个新的 cron 作业并将路径添加到您要运行的 php 文件。例如 php /home/[你的用户名]/public_html/rss/import_feeds.php。您可以在字段中输入您希望 php 脚本运行的分钟数。

Run a PHP file in a cron job using CPanel

【讨论】:

    【解决方案2】:

    如果 PHP 是您的首选路线,则可以将如下所示的简单脚本设置为在后台无限期运行(将其命名为 grabber.php):

    #!/usr/bin/php
    <?php
    do {
        // Grab the data from your URL
        $data = file_get_contents("http://www.example.com/data.source");
    
        // Write the data out somewhere so your push notifications script can read it
        file_put_contents("/path/to/shared/data.store", $data);
    
        // Wait and do it all over again
        sleep(20);
    } while (true);
    

    然后启动它(假设您使用的是 unixy 操作系统):

    $ chmod u+x grabber.php
    $ ./grabber.php > /path/to/a/file/logging/script/output.log 2>&1 &
    

    最后那个&amp;发送进程在后台运行。

    PHP 对此可能有点矫枉过正,也许一个简单的 bash 脚本会更好:

    #!/bin/bash
    # This downloads data and writes to a file ('data-file')
    doWork () {
        data=$(curl -L http://www.example.com/data.source)
        echo $data > data-file
        sleep 20
        doWork
    }
    
    # Start working
    doWork
    
    $ chmod u+x grabber.sh
    $ ./grabber.sh > /path/to/logger.log 2>&1 &
    

    【讨论】:

    • 好东西!谢谢!我需要 PHP 来建立与苹果推送通知服务器的安全连接并发送一个 json 字符串。套接字等...不能使用 bash。
    猜你喜欢
    • 2012-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-31
    • 2011-11-21
    • 2018-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多