zoukankan      html  css  js  c++  java
  • 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 协程客户端 - 知乎 

  • 相关阅读:
    LinqPad 1.31 提供下载
    LINQ to SQL更新数据库操作
    电脑开机进入桌面很慢的解决办法
    VS2008的Linq更新数据就那么费劲
    将图片进行base64编码,并将接受编码后的图片转换为实际图片
    C# 2.0 之 static class
    测试杀毒软件的性能代码
    VS2008 Ajax Toolkit 控件(修正后转载)
    C#发送邮件程序 及测试邮件服务器
    asp.net中的<%%>形式的详细用法实例讲解
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15847742.html
Copyright © 2011-2022 走看看