博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP--Workerman入门
阅读量:2351 次
发布时间:2019-05-10

本文共 1761 字,大约阅读时间需要 5 分钟。

项目分为Linux下和Window下,因为系统跑在Linux下所以Demo为Linux版,官网上有Window的版本。

入门级Demo:
项目目录,将workerman依赖包放在Workerman下
这里写图片描述
ws_test.php:

count = 4;// 连接信息$userInfo = array ();//子进程启动时的回调函数$ws_worker->onWorkerStart = function($worker){
print_log("启动一个子进程");};//客户端与Workerman建立连接时(TCP三次握手完成后)触发的回调函数$worker->onConnect = function($connection){
print_log("用户连接进来,IP:"+$connection->getRemoteIp());};// 当收到客户端发来的数据后返回hello $data给客户端$ws_worker->onMessage = function ($connection, $data) {
print_log ( $data ); $userInfo [$data] = $connection; send_message_to_all($userInfo,$connection->getRemoteIp());};// 客户端连接与Workerman断开时触发的回调函数$ws_worker->onClose = function ($connection) {
print_log ( $connection."关闭连接"); remove_user ($userInfo, $connection );};// 客户端的连接上发生错误的回调方法$ws_worker->onError = function ($connection, $code, $msg) {
print_log($connection."连接发送错误 $code:".$code.'-'."$msg:".$msg); remove_user ($userInfo, $connection );};//移除function remove_user($userInfo,$connection) {
foreach ($userInfo as $id => $conn ) { if ($conn == $connection) { unset ( $userInfo [$id] ); } }}//给所有的人发送消息function send_message_to_all($userInfo,$msg){
foreach ($userInfo as $id => $conn ) { $conn->send($msg); }}// 运行workerWorker::runAll ();?>

页面端:

将项目放在Linux下随意目录下,不必非要放在apache和Nginx下。

切换到ws_test.php目录下(必须要,否则启动会报错)。
启动

php ws_test.php start

将html页面放在apache下。在浏览器端打开即可。

踩坑:

启动时会报:

PHP Fatal error:  Call to undefined function Workerman\posix_getpid() in /var/temp/WebSocket03/Workerman/Worker.php on line 1908Fatal error: Call to undefined function Workerman\posix_getpid() in /var/temp/WebSocket03/Workerman/Worker.php on line 1908

检查系统是否满足workerman:curl -Ss | php

安照workman官网的说明一步步排查即可。
参考:

你可能感兴趣的文章
IOS 成员变量,属性变量,局部变量,实例变量,全局变量 详解
查看>>
Android ADB 详解
查看>>
GitHub 出现 POST git-receive-pack (chunked) 解决方案详解
查看>>
iOS SQLCipher SQLite加密 详解
查看>>
OpenSSL生成证书进行iOS加密,java解密的RSA非对称加密 详解
查看>>
Android EventBus详解
查看>>
iOS 关闭软键盘
查看>>
iOS 限制应用只能竖屏显示
查看>>
Android Studio Freeline插件详解
查看>>
SourceTree冲突解决详解
查看>>
iOS CocoaPods 详解
查看>>
Object-C Block详解
查看>>
iOS 不定参数 详解
查看>>
iOS AFNetworking 以及 Cookie 详解
查看>>
Intellij IDEA 将工程转换成maven工程 详解
查看>>
Linux 安装以及基本使用Hadoop 详解
查看>>
iOS 在 xib 文件中使用 UIScrollView
查看>>
iOS pushViewController 和 presentViewController的区别 详解
查看>>
iOS UICollectionView 和 UITableView cell更新 详解
查看>>
iOS UINavigationController 详解
查看>>