Cron.php 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace Spider\Lib;
  3. use Dever;
  4. class Cron
  5. {
  6. private $queue;
  7. public function project()
  8. {
  9. $param['option_sdate'] = time();
  10. return Dever::db('spider/project')->get($param);
  11. }
  12. public function test_api($id)
  13. {
  14. $project = $this->project();
  15. foreach ($project as $k => $v) {
  16. }
  17. }
  18. private function cron()
  19. {
  20. if (!$this->queue) {
  21. $this->queue = new Queue('db');
  22. }
  23. Dever::import('task');
  24. $state = true;
  25. while ($state) {
  26. $state = $this->load();
  27. }
  28. }
  29. private function load()
  30. {
  31. $config = $this->queue->pop();
  32. if ($config) {
  33. # 此处开task
  34. Dever::task(function() use($config, $this)
  35. {
  36. $col = $this->col($config['id']);
  37. $this->parse($config['url'], $config['id'], $config['collect_rule'], $col);
  38. });
  39. $state = true;
  40. } else {
  41. $state = false;
  42. }
  43. return $state;
  44. }
  45. private function col($project)
  46. {
  47. return Dever::db('spider/col')->getList(['where_project_id' => $project]);
  48. }
  49. private function parse($url, $project, $rule, $col)
  50. {
  51. $parse = new Parse($url, $project, $rule, $col);
  52. return $parse->get();
  53. }
  54. }