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);
}
}
}