zoukankan      html  css  js  c++  java
  • wokerman随笔

    1. linux环境检查是否满足workerman要求:
    curl -Ss http://www.workerman.net/check.php | php
    
    1. workerman依赖扩展:pcntl扩展posix扩展Event扩展或libevent扩展。Event扩展能显著提高workerman在高并发连接时CPU利用率

    2. workerman基于php命令行模式运行,因此workerman的启动与停止有以下方式:
      ---- 启动:

      • 以调试方式启动:php server.php start
      • 以守护进程方式启动:php server.php start -d

      ---- 停止:php server.php stop
      ---- 重启:php server.php restart
      ---- 平滑重启:php server.php reload
      ---- 查看状态:php server.php status
      ---- 查看连接状态:php server.php connections

    3. 不要使用exit、die出语句,这样会导致进程退出

    4. 引入文件建议使用require_once或include_once

    5. 长连接应用必须加 心跳,否则可能因为长时间不活跃而被路由节点防火墙断开

    6. 只有在on{...}回调中载入的文件平滑重启后才会自动更新,启动脚本中直接载入的文件或者写死的代码运行reload不会自动更新(比如在脚本中require_once或include_once的文件)

    7. 一般来说在Worker::runAll();调用前运行的代码都是在主进程运行的,onXXX回调运行的代码都属于子进程。注意写在Worker::runAll();后面的代码永远不会被执行。代码:

    require_once __DIR__ . '/Workerman/Autoloader.php';
    use WorkermanWorker;
    
    // 运行在主进程
    $tcp_worker = new Worker("tcp://0.0.0.0:2347");
    // 赋值过程运行在主进程
    $tcp_worker->onMessage = function($connection, $data)
    {
        // 这部分运行在子进程
        $connection->send('hello ' . $data);
    };
    
    Worker::runAll();
    
    1. 不要在主进程中初始化数据库、memcache、redis等连接资源,要在onWorkerStart里面初始化连接资源
    2. worker进程的id编号范围是0~$worker->count-1,进程重启后id编号值不变
    3. $connections属性存储了当前进程的所有客户端连接对象,其结构为:
      array(id=>connection, id=>connection, ...) ,可以通过$worker->connections[$id]获取connection对象,从而实现根据id向指定客户端推送消息
    4. stdoutFile属性用于将所有向终端的输出重定向到stdoutFile指定的文件。前提是以守护进程方式运行
    5. 在使用workerman开发中如果想记录业务日志,可以使用file_put_contentserror_log函数来实现
    6. onWorkerStart是在子进程启动时运行的,如果开启多个子进程($worker->count),则会运行$worker->count次
    7. onConnect事件仅代表客户端与workerman完成了Tcp三次握手,此时客户端还没发来任何数据,在此事件中只能通过**$worker->getRemoteIp()**来获取对方Ip,没有其他可以鉴别客户端的数据或者信息
    8. Worker::runAll()执行后将永久阻塞,也就是位于Worker::runAll()之后的代码将不会被执行
  • 相关阅读:
    C# 集合类 :(Array、 Arraylist、List、Hashtable、Dictionary、Stack、Queue)
    "Isa"与"Hasa"
    Access、SQLite、HSQLDB、Sybase、MySQL、DB4O比较
    C#反射(二)
    跳出语句
    C#反射(一)
    返回集合使用IEnumerable<>还是IList<>
    理解C#值类型与引用类型
    WF4 Beta2 工作原理
    Interesting thing with WF4 Activity Scheduling
  • 原文地址:https://www.cnblogs.com/lty-fly/p/11687335.html
Copyright © 2011-2022 走看看