企业🤖AI Agent构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
> # 开发者必读 * 不要在代码中执行sleep和其他睡眠函数,这样会导致整个进程阻塞 exit/die是危险的,会导致worker进程退出 * PHP代码中如果有异常抛出,必须在回调函数中进行try/catch捕获异常,否则会导致工作进程退出 * swoole不支持set_exception_handler,必须使用try/catch方式处理异常 * 如果需要自行建立客户端连接,例如有数据库、redis、memcached等,由于fastSwoole支持多进程,而多进程资源是不共享的,所以请保证每个woker里面都有自己的连接,最简单的做法实在\server\http.php中的onWorkerStart回调中建立连接,fastSwoole默认数据库panco/multi-db就是这么处理的,注意链接一段时间可能会断开,所以请使用定时器隔一段时间操作一下保证不断开连接,例如redis、memcache等连接也可以这么做! * 进程隔离也是很多新手经常遇到的问题。修改了全局变量的值,为什么不生效,原因就是全局变量在不同的进程,内存空间是隔离的,所以无效。 所以使用fastSwoole开发Server程序需要了解进程隔离问题。不同的进程中PHP变量不是共享,即使是全局变量,在A进程内修改了它的值,在B进程内是无效的,如果需要在不同的Worker进程内共享数据,可以用Redis、MySQL、文件、Swoole\Table、APCu、shmget等工具实现 还有,不同进程的文件句柄是隔离的,所以在A进程创建的Socket连接或打开的文件,在B进程内是无效,即使是将它的fd发送到B进程也是不可用的。