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 协程客户端 - 知乎 

  • 相关阅读:
    Java的final关键字
    递归
    打开Eclipse时出现"The Eclipse executable launcher was unable to locate its companion shared library"情况的解决
    warning: LF will be replaced by CRLF in test.txt.
    Java类的初始化问题
    递归输入与引用传值(UVa839 Not so Mobile)
    UVa1599 Ideal Path(双向bfs+字典序+非简单图的最短路+队列判重)
    欧拉图和欧拉圈-Play On Words(UVa10129)
    UVA12096 集合栈计算机(map和vector实现双射关系+集合的交并运算的STL)
    WebStorm快捷键
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15847742.html
Copyright © 2011-2022 走看看