您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
workerman常见问题-php的几种回调写法-类的静态方法作为回调
发布时间:2022-01-13 19:42:24编辑:雪饮阅读()
启动脚本:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
class MyClass{
public static function onWorkerStart(Worker $worker){}
public static function onConnect(TcpConnection $connection){
$connection->send("kasumi");
}
public static function onMessage(TcpConnection $connection, $message) {}
public static function onClose(TcpConnection $connection){}
public static function onWorkerStop(TcpConnection $connection){}
}
$http_worker = new Worker("http://0.0.0.0:2345");
// 调用类的静态方法。
$http_worker->onConnect = array('MyClass', 'onConnect');
Worker::runAll();
运行及访问
[root@localhost workerman]# /www/server/php/73/bin/php -c /www/server/php/73/etc/php.ini index.php start -d
Workerman[index.php] start in DAEMON mode
----------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.26 PHP version:7.3.31
------------------------------------------ WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none http://0.0.0.0:2345 1 [OK]
---------------------------------------------------------------------------------------------
Input "php index.php stop" to stop. Start success.
[root@localhost workerman]# elinks http://127.0.0.1:2345 --dump
kasumi
如果类带命名空间,则是类似这样的写法:
MyClass.php:
<?php
namespace My;
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
class MyClass{
public static function onWorkerStart(Worker $worker){}
public static function onConnect(TcpConnection $connection){
$connection->send("namespace test");
}
public static function onMessage(TcpConnection $connection, $message) {}
public static function onClose(TcpConnection $connection){}
public static function onWorkerStop(TcpConnection $connection){}
}
index.php:
<?php
use Workerman\Worker;
use Workerman\Connection\TcpConnection;
use Workerman\Protocols\Http\Request;
require_once __DIR__ . '/vendor/autoload.php';
require_once __DIR__ . '/MyClass.php';
$http_worker = new Worker("http://0.0.0.0:2345");
$http_worker->onConnect = array('My\MyClass', 'onConnect');
Worker::runAll();
服务运行并访问:
[root@localhost workerman]# /www/server/php/73/bin/php -c /www/server/php/73/etc/php.ini index.php start -d
Workerman[index.php] start in DAEMON mode
----------------------------------------- WORKERMAN -----------------------------------------
Workerman version:4.0.26 PHP version:7.3.31
------------------------------------------ WORKERS ------------------------------------------
proto user worker listen processes status
tcp root none http://0.0.0.0:2345 1 [OK]
---------------------------------------------------------------------------------------------
Input "php index.php stop" to stop. Start success.
[root@localhost workerman]# elinks http://127.0.0.1:2345 --dump
namespace test
注意:根据PHP的运行机制,如果没用调用new 则不会调用构造函数,另外静态类的方法里面不允许使用$this。
关键字词:workerman,常见问题,php,回调,类,静态,方法
相关文章
- workerman常见问题-php的几种回调写法-类方法作为回调
- workerman常见问题-php的几种回调写法-普通函数回调
- workerman作爲客戶端系列之socket5即s5代理搭建基於ce
- workerman作爲客戶端系列之http代理搭建
- workerman作爲客戶端-作爲ws或wss客戶端-做為ws客戶端
- workerman創建https服務(普通請求轉https請求,基於寶塔
- workerman創建https服務
- workerman創建wss服務(基於apache基於phpstudy環境)
- workerman創建wss服務-(配置于nginx上作爲nginx的locat
- workerman-常見問題-創建wss服務-直接用Workerman开启