1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- <?php
- /**
- * 队列
- *
- *
- *
- *
- */
- defined('InShopNC') or exit('Access Invalid!');
- //此行代码会导致bug
- //ini_set('default_socket_timeout', -1);
- function sig_handler($signo)
- {
- switch($signo) {
- case SIGINT:
- break;
- default:
- break;
- }
- }
- class queueControl extends BaseCronControl
- {
- private $_stop = false;
- public function indexOp()
- {
- if (ob_get_level()) ob_end_clean();
- // pcntl_signal(SIGINT, array($this,'sig_handler'));
- pcntl_signal(SIGINT, 'sig_handler');
- $logic_queue = Logic('queue');
- $worker = new QueueServer();
- $queues = $worker->scan();
- while (true)
- {
- pcntl_signal_dispatch();
- if ($this->_stop) {
- exit;
- }
- $content = $worker->pop($queues,60);
- if($content == false) continue;
- if (is_array($content))
- {
- $method = key($content);
- $arg = current($content);
- $result = $logic_queue->$method($arg);
- if (!$result['state']) {
- $this->log($result['msg'],false);
- }
- }
- else
- {
- $model = Model();
- $model->checkActive();
- unset($model);
- }
- }
- }
- private function sig_handler($signo) {
- switch($signo) {
- case SIGINT:
- $this->_stop = true;
- break;
- default:
- break;
- }
- }
- }
|