PHP Deprecated: Swoole\Event::rshutdown(): Event::wait() in shutdown function is deprecated in Unkn

PHP Deprecated:  Swoole\Event::rshutdown(): Event::wait() in shutdown function is deprecated in Unknown on line 0

Deprecated: Swoole\Event::rshutdown(): Event::wait() in shutdown function is deprecated in Unknown on line 0

swoole :

swoole版本PHP版本
本地环境4.4.67.3.31
测试线4.7.0-dev7.3.25

查看swoole 版本号:

php --ri swoole

编译成功后使用--ri查看信息,就可以看到curl-native

$ php --ri swoole | grep curl
curl-native => enabled

Swoole v4.6.0 版本发布了,同样也是 2021 年的首个版本更新。

作为一个 y 版本发布,此次更新也包含了不兼容的修改以及许多的新功能,下面就来看一看都有哪些改动?

一、向下不兼容改动

  • 从 v4.6.0 版本开始将不再支持 PHP7.1

PHP 官方对于 PHP7.1 的支持也早已在 2019 年底结束。

  • 将 Event::rshutdown() 标记为已弃用(测试线的高版本弃用rshutdown ),请改用 Coroutine\run

在之前的版本中,如果在index.php中直接使用go创建协程

go(function () {
    var_dump(Co\System::gethostbyname('www.baidu.com'));
});

这样是正常的,但是在此版本中,就会收到废弃警告

PHP Deprecated:  Swoole\Event::rshutdown(): Event::wait() in shutdown function is deprecated in Unknown on line 0

推荐使用Coroutine\run来代替这种方式:

Swoole\Coroutine\run(function () {
    var_dump(Co\System::gethostbyname('www.baidu.com'));
});

Swoole\Coroutine\run(function () {
    go(function () {
        var_dump(Co\System::gethostbyname('www.baidu.com'));
    });
    go(function () {
        var_dump(Co\System::gethostbyname('www.zhihu.com'));
    });
});

二、swoole添加定时器定时任务的两种方式

swoole添加定时器定时任务的两种方式。

第一种方式:(version4.6 版本容易报上面的错误提示)

$ws_server = new swoole_websocket_server($socket_config['host'], $socket_config['port']);
$process = new \swoole_process(function ()
{
	swoole_timer_tick(200000, function ()
	{
     echo time() . "\r\n";
	});
});
$ws_server->addProcess($process);
$ws_server->start();

我的:

        //创建自定义进程
		$process = new Swoole_Process(function ($process)
		{
			//单位ms:如1000表示1秒
			$timer = swoole_timer_tick(1000*60, function ()
			{
				$this->HandleEs = new HandleEs();
				//定时执行es同步失败补偿
				$this->HandleEs->handleFailList();
			});
		});
		$this->serv->addProcess($process);

第二种方式:(高版本4.7或4.9改用这种方式,解决问题)

$ws_server = new swoole_websocket_server($socket_config['host'], $socket_config['port']);
$ws_server->on('WorkerStart', function ($ws, $worker_id)
{
	// 仅在第一个 Worker 进程启动时启动 Timer 定时器
	if ($worker_id == 0){
	// 启动 Timer,每 1000 毫秒回调一次 onTick 函数,
		swoole_timer_tick(2000, function (){
		echo time() . "\r\n";
		});
	}
});
$ws_server->start();

三、swoole不小心开启了守护进程如何关闭

netstat -apn | grep 9502

清除这个进程

kill -9 35156

启动客户端这时就会报错连不上了,证明服务已关

或者:麻烦点的方法,kill -9 pid pid

参考;Swoole v4.6.0 版本发布,支持原生 curl 协程客户端 - 知乎 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lxw1844912514

你的打赏就是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值