tp5.1框架 think-queue 队列
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

JobTest.php 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace app\index\controller;
  3. use think\Queue;
  4. use think\Controller;
  5. /*
  6. *
  7. */
  8. class JobTest extends Controller
  9. {
  10. /*
  11. * https://queue.dev.zx2049.com/index/JobTest/test
  12. */
  13. public function test()
  14. {
  15. // 1.当前任务将由哪个类来负责处理。
  16. // 当轮到该任务时,系统将生成一个该类的实例,并调用其 fire 方法
  17. $jobHandlerClassName = 'app\jobs\JobTest';
  18. // 2.当前任务归属的队列名称,如果为新队列,会自动创建
  19. $jobQueueName = "helloJobQueue";
  20. // 3.当前任务所需的业务数据, 不能为 resource 类型,其他类型最终将转化为json形式的字符串
  21. // (jobData 为对象时,存储其public属性的键值对 )
  22. $jobData = ['ts' => time(), 'uniqId' => uniqid(), 'a' => 1];
  23. // 4.将该任务推送到消息队列,等待对应的消费者去执行
  24. for($i=1;$i<100;$i++){
  25. $isPushed = Queue::push($jobHandlerClassName, $jobData, $jobQueueName);
  26. //var_dump($isPushed);
  27. // database 驱动时,返回值为 1|false;redis 驱动时,返回值为 随机字符串|false
  28. //域名解析存在两条 *.dev
  29. //这里明明返回0 0 !== false 是成立的
  30. //以为一直成功 结果根本没插入数据库
  31. //既然能执行到这里的代码 为何无法插入数据库 返回0
  32. if( $isPushed !== false ){
  33. echo date('Y-m-d H:i:s') . " a new Hello Job is Pushed to the MQ" . "<br>";
  34. }else{
  35. echo 'Oops, something went wrong.';
  36. }
  37. }
  38. }
  39. }