PHP寫的非同步高併發伺服器,基於libevent

2022-07-13 05:18:12 字數 1677 閱讀 5169

部落格分類:php

fpsocket

linux

qq本文章於2023年11月修改。

swoole提供了php的高效能server,非同步io,asyncmysql等特性。

原php**框架遷移至保留原有**和web框架。

swoole socket網路開發框架,是基於php的libevent和pcntl模組的,並且只能用於linux/unix系統下。請先啟用pcntl,安裝libevent擴充套件。

pcntl:php核心模組已包含了pcntl,只需在編譯時加入--enable-pcntl即可,當然也可以用extension擴充套件

libevent

編寫的類需要繼承自tcpserver類,在swoolesocket包中。目前只提供了單程序非同步事件模型,適合用於io耗時較少的網路伺服器程式,比如聊天室。多程序非同步模型,多程序同步模型,會在近期提供。基類的**,請從檢出

php**  

<?php   

require 'tcpserver.php';  

class myserver extends tcpserver  

elseif($data=='shutdown')  

else  

}  /** 

* 傳送到所有客戶端 

* @param $data 

* @return unknown_type 

*/  

function sendall($client_id,$data)  

}  /** 

* 傳送到某個客戶端 

* @param $client_id 

* @param $data 

* @return unknown_type 

*/  

function sendto($client_id,$data)  

function onstart()  

function onconnect($client_id)  

function onclose($client_id)  

function onshutdown()  

}  $server = new myserver('0.0.0.0',8005);  

$server->run();  

客戶端程式

php**  

<?php   

class stdio  

static function output($string)  

}  $fp = stream_socket_client('tcp:',$errno, $errstr);  

$socket = serialize($fp);  

if(!$fp)  

else  

//child  

elseif($pid==0)  

}  //parent  

else  

posix_kill($pid, 9);  

}  fclose($fp);  

}  php tcpserver.php 執行伺服器程式

php tcpclient.php 執行客戶端程式,客戶端有2個程序,主程序負責接收輸入資訊,傳送到網路。另乙個程序,接收網路資訊,顯示在螢幕上。

PHP寫的非同步高併發伺服器,基於libevent

部落格分類 php fpsocket linuxqq 本文章於2013年11月修改。swoole提供了php的高效能server,非同步io,asyncmysql等特性。原php 框架遷移至保留原有 和web框架。swoole socket網路開發框架,是基於php的libevent和pcntl模組...

PHP寫的非同步高併發伺服器,基於libevent

部落格分類 php fpsocket linuxqq 本文章於2013年11月修改。swoole提供了php的高效能server,非同步io,asyncmysql等特性。原php 框架遷移至保留原有 和web框架。swoole socket網路開發框架,是基於php的libevent和pcntl模組...

高併發伺服器(基於epoll)

本章節是用基本的linux unix基本函式編寫乙個完整的伺服器和客戶端例子,可在linux ubuntu 和unix freebsd 上執行,客戶端和服務端的功能如下 客戶端從標準輸入讀入一行,傳送到服務端 服務端從網路讀取一行,把小寫變為大寫,然後輸出到客戶端 客戶端收到服務端的響應,輸出這一行...