¡¤ÄúÏÖÔÚµÄλÖ㺠ÔÆÒíÍøÂç >> ÎÄÕÂÖÐÐÄ >> ÍøÕ¾½¨Éè >> ÍøÕ¾½¨É迪·¢ >> phpÍøÕ¾¿ª·¢ >> [PHP]swoole_server¼¸¸ö½ø³ÌµÄ·Ö¹¤
ժҪ��Swoole��һ��PHP���Եĸ���������ͨ�ſ�ܣ��ṩ��PHP���Ե��첽���̷߳��������첽TCP/UDP����ͻ��ˣ��첽MySQL�����ݿ����ӳأ�AsyncTask����Ϣ���У����붨ʱ�����첽�ļ���д���첽DNS��ѯ��ǿ��Ĺ��ܣ��ɱ������ɸ��ֹ���ȷ�Ľ�����ʵ�֣�������ϸ�����¼������̵ķֹ����Ա������߸����ٵ�����Swoole��ܡ�
Swoole����
Swoole��PHP���Եĸ���������ͨ�ſ�ܣ��ṩ��PHP���Ե��첽���̷߳��������첽TCP/UDP����ͻ��ˣ��첽MySQL�����ݿ����ӳأ�AsyncTask����Ϣ���У����붨ʱ�����첽�ļ���д���첽DNS��ѯ�� Swoole��Ȼ�DZ�׼��PHP��չ��ʵ��������ͨ����չ��ͬ����ͨ����չֻ���ṩһ���⺯������swoole��չ�����к��ӹ�PHP�Ŀ���Ȩ�������¼�Ñ������IO�¼�������swoole���Զ��ص�ָ����PHP������
$serv = new swoole_server("127.0.0.1", 9501); $serv->set(array( 'worker_num' => 8, //������������ 'daemonize' => true, //�Ƿ���Ϊ�ػ����� )); $serv->on('connect', function ($serv, $fd){ echo "Client:Connect.\n"; }); $serv->on('receive', function ($serv, $fd, $from_id, $data) { $serv->send($fd, 'Swoole: '.$data); $serv->close($fd); }); $serv->on('close', function ($serv, $fd) { echo "Client: Close.\n"; }); $serv->start();
$client = new swoole_client(SWOOLE_SOCK_TCP, SWOOLE_SOCK_ASYNC); //�����¼��ص����� $client->on("connect", function($cli) { $cli->send("hello world\n"); }); $client->on("receive", function($cli, $data){ echo "Received: ".$data."\n"; }); $client->on("error", function($cli){ echo "Connect failed\n"; }); $client->on("close", function($cli){ echo "Connection close\n"; }); //������������ $client->connect('127.0.0.1', 9501, 0.5);
�������Ƭ�����swoole������
Master������Ҫ������֤Swoole��ܻ��Ƶ����С����ᴴ�����������Ե��̣߳�
swoole��Worker/Task���̶�����Manager����Fork�������ġ�
Ϊʲô����Master�����أ���ҪÔ����Master�����Ƕ��̵߳ģ����ܰ�ȫ��ִ��fork������
Swoole�ṩ�����ƵĽ��̹������ƣ���Worker�����쳣�˳����緢��PHP���������󡢱�����������ɱ����ﵽmax_request����֮�������˳��������̻����������µ�Worker���̡� Worker�����ڿ�������ͨ��apache+php����php-fpm��д���롣����Ҫ��Node.js����д�첽�ص��Ĵ��롣
Task���̵�ȫ����task_worker���̣���һ�������worker���̡�����onWorkerStart
��task������Ҳ�ᱻ���á���$worker_id >= $serv->setting['worker_num']
ʱ��ʾ���������task_worker�����򣬴����˽�����worker���̡�
onStart onShutdown onMasterConnect onMasterClose onTimer
onWorkerStart onWorkerStop onConnect onClose onReceive onTimer onFinish
onTask onWorkerStart
onManagerStart onManagerStop