账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    php怎么把各种任务做成多个任务队列,每3秒任务执行程序轮一次,分别按顺序从各队列里提取一个任务来执行
    41
    0

    问题描述

    php怎么把各种任务做成多个任务队列,每3秒任务执行程序轮一次,分别按顺序从各队列里提取一个任务来执行
    我要做的是每三秒执行程序 然后进行发送邮件程序 现在使用的crontab和xshell脚本进行的 但是问题比较多 服务器容易挂 想使用任务队列来执行这个怎么做

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 在PHP中,我们可以使用任务队列来实现这个功能。一个常见的任务队列实现是Redis队列。以下是一个简单的示例:

      首先,你需要在Redis服务器上创建一个队列:

      bash $redis-cli pubsub publish --topic my_queue --pattern "test"

      然后,你需要在PHP中订阅这个队列:

      ```php $redis = new Redis(); $redis->connect("localhost", 6379); $redis->set("my_queue", "1");

      $redis->channel("my_queue").subscribe(function ($channel, $message) { echo "Received message: " . $message . "\n"; });

      $redis->channel("my_queue").command("task", function ($channel, $data) { echo "Task processed: " . $data . "\n"; }); ```

      在这个示例中,我们创建了一个名为my_queue的Redis队列,然后在subscribe方法中订阅这个队列。当我们收到消息时,我们会在控制台上打印出消息。

      然后,我们创建了一个名为task的Redis命令,该命令会在队列中搜索任务,如果找到一个任务,就调用该任务。这个命令会在每3秒执行一次。

      注意,你需要将localhost6379替换为你的Redis服务器的实际地址和端口。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部