<?php
ini_set("memory_limit", "-1");
use Workerman\Worker;
use \Workerman\Lib\Timer;
use Applications\My\Service\TestTime;
//引入自動加載類
//第一種方法
//require_once __DIR__ . '/../../vendor/autoload.php';
//第二種方法
require_once __DIR__.'/../../vendor/workerman/workerman/Autoloader.php';
// 創(chuàng)建一個Worker監(jiān)聽1234端口,使用http協(xié)議通訊
$http_worker = new Worker('http://0.0.0.0:1234');
//設(shè)定名字
$http_worker->name = 'TestTimeWorker';
// 啟動1個進程對外提供服務(wù)
$http_worker->count = 1;
//設(shè)置Worker子進程啟動時的回調(diào)函數(shù),每個子進程啟動時都會執(zhí)行
$http_worker->onWorkerStart = function ($http_worker) {
Timer::add(1, function () {
TestTime::doData();
});
};
//接收到瀏覽器發(fā)送的數(shù)據(jù)時回復(fù)hello world給瀏覽器
$http_worker->onMessage = function ($connection, $data) {
// 向瀏覽器發(fā)送hello world
$connection->send('hello world');
};
// 如果不是在根目錄啟動,則運行runAll方法,運行worker
if (!defined('GLOBAL_START')) {
Worker::runAll();
}
報錯:
Class 'Applications\My\Service\TestTime' not found in /Users/rich/www/myworkerman/Applications/My/start_demotime.php:38
因為你的項目沒有自動加載功能吧。
自己寫一個autload自動加載,如果不會寫就用composer給你項目生成一個自動加載。
項目根目錄執(zhí)行composer require workerman/workerman
,會生成composer.json內(nèi)容如下
{
"require": {
"workerman/workerman": "^4.0"
}
}
將composer.json改為
{
"require": {
"workerman/workerman": "^4.0"
},
"autoload": {
"psr-4" : {
"Applications\\" : "./Applications"
}
}
}
執(zhí)行 composer dumpautoload
然后代碼里引用自動加載文件
require_once __DIR__ . '/vendor/autoload.php';
這樣就給你自己的項目生成了一個自動加載,符合psr4規(guī)范的類都可以自動加載進來