Server
����Server����
$serv = new swoole_server("127.0.0.1", 9501, SWOOLE_BASE, SWOOLE_SOCK_TCP);
swoole_serverֻ������php-cli����
��������ʱ����
$serv->set(array('worker_num' => 4, 'daemonize' => true));
ע���¼��ص�����
$serv->on('Connect', 'my_onConnect'); $serv->on('Receive', 'my_onReceive'); $serv->on('Close', 'my_onClose');
�����б�
$serv->manager_pid; //������̵�PID��ͨ���������̷���SIGUSR1�źſ�ʵ���������� $serv->master_pid; //�����̵�PID��ͨ���������̷���SIGTERM�źſɰ�ȫ�رշ�����
��������ͼ
����/�߳̽ṹͼ
ע������
- ��Ҫ�ڴ�����ִ��sleep�������ᵼ��������������
- exit/die��Σ�յģ��ᵼ��worker�����˳�
- ��ͨ��register_shutdown_function���������������ڽ����쳣�˳�ʱ��һЩ����������������
register_shutdown_function('handleFatal'); function handleFatal() { $error = error_get_last(); if (isset($error['type'])) { switch ($error['type']) { case E_ERROR : case E_PARSE : case E_DEPRECATED: case E_CORE_ERROR : case E_COMPILE_ERROR : $message = $error['message']; $file = $error['file']; $line = $error['line']; $log = "$message ($file:$line)\nStack trace:\n"; $trace = debug_backtrace(); foreach ($trace as $i => $t) { if (!isset($t['file'])) { $t['file'] = 'unknown'; } if (!isset($t['line'])) { $t['line'] = 0; } if (!isset($t['function'])) { $t['function'] = 'unknown'; } $log .= "#$i {$t['file']}({$t['line']}): "; if (isset($t['object']) && is_object($t['object'])) { $log .= get_class($t['object']) . '->'; } $log .= "{$t['function']}()\n"; } if (isset($_SERVER['REQUEST_URI'])) { $log .= '[QUERY] ' . $_SERVER['REQUEST_URI']; } error_log($log); $serv->send($this->currentFd, $log); } } }