首页
下载
文档
问答社区
视频
捐赠
源代码
AI 助理
赞助商
CRMEB
Apipost
腾讯云
微擎
禅道
51Talk
商业产品
Swoole AI 智能文档翻译器
Swoole-Compiler PHP 代码加密器
CRMEB 新零售社交电商系统
登录
注册
全部
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
发表新帖
通过ubuntu开启启动时无法启动
### 问题描述 通过ubuntu20.4设置开机启动,使用rc.local开启启动一个脚本,通过脚本启动时无法启动并报错,如果是在命令行的情况下执行这个脚本可以正常运行 ### Swoole版本,PHP版本,以及操作系统版本信息 php7.4,ubuntu20.4,swoole4 ### 相关代码 执行脚本 ```shell #!/bin/sh version=$(cat ./netWorkVersion) # file="./netWork${version}.tar.gz" # if [ -f "$file" ]; then # tar -zxf $file # rm -f $file # fi sleep 5s if [ -d "$version" ];then /www/server/php/74/bin/php /www/wwwroot/network/$version/start.php echo "success" else echo "fail" fi ``` 执行start.php的文件 ```php <?php // use Swoole\Client; use function Swoole\Coroutine\run; use Swoole\Database\RedisConfig; use Swoole\Database\RedisPool; //线程和处理进程根据CPU数量 $server->set([ 'task_worker_num' => 512,//task为100个进程, 'max_connection'=>10000, 'task_enable_coroutine'=>true,//task开启携程 'enable_coroutine' => true, //异步回掉支持协程序 'task_use_object' => true,//task回调使用对象 'dispatch_mode'=>3,//投递给空闲的worker 'daemonize'=>false,//守护模式 'log_file'=>__DIR__ .'/run_'.date('d').'.log', 'buffer_input_size'=>32*1024*1024,//单条数据最大10M 'buffer_output_size'=>32*1024*1024, 'hook_flags'=> SWOOLE_HOOK_TCP | SWOOLE_HOOK_UNIX | SWOOLE_HOOK_UDG | SWOOLE_HOOK_TLS | SWOOLE_HOOK_FILE | SWOOLE_HOOK_STREAM_FUNCTION | SWOOLE_HOOK_BLOCKING_FUNCTION | SWOOLE_HOOK_PROC | SWOOLE_HOOK_UDP | SWOOLE_HOOK_CURL | SWOOLE_HOOK_NATIVE_CURL | SWOOLE_HOOK_SOCKETS | SWOOLE_HOOK_STDIO,//一键协程化 'reload_async' => true, ]); //启动服务器 $server->start(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 日志如下 ``` [2022-10-08 15:36:34 @2221.0] WARNING Server::set_max_connection(): max_connection is exceed the maximum value, it's reset to 1024 [2022-10-08 15:36:34 @2221.0] WARNING Server::create(): max_connection must be bigger than 1065, it's reset to 1024 [2022-10-08 15:36:34 @2221.0] WARNING UnixSocket::UnixSocket(): socketpair() failed, Error: Too many open files[24] [2022-10-08 15:36:34 @2221.0] WARNING Server::create_task_workers(): [Master] create task_workers failed [2022-10-08 15:36:34 @2221.0] WARNING ProcessFactory::start(): failed to start [2022-10-08 15:36:34 @2221.0] ERROR php_swoole_server_rshutdown() (ERRNO 503): Fatal error: Swoole\Server::start(): failed to start server. Error: ProcessFactory::start(): failed to start in /www/wwwroot/network/0.1/start.php on line 92 ```
发布于2年前 · 12 次浏览 · 来自
提问
茆政
### 问题描述 通过ubuntu20.4设置开机启动,使用rc.local开启启动一个脚本,通过脚本启动时无法启动并报错,如果是在命令行的情况下执行这个脚本可以正常运行 ### Swoole版本,PHP版本,以及操作系统版本信息 php7.4,ubuntu20.4,swoole4 ### 相关代码 执行脚本 ```shell #!/bin/sh version=$(cat ./netWorkVersion) # file="./netWork${version}.tar.gz" # if [ -f "$file" ]; then # tar -zxf $file # rm -f $file # fi sleep 5s if [ -d "$version" ];then /www/server/php/74/bin/php /www/wwwroot/network/$version/start.php echo "success" else echo "fail" fi ``` 执行start.php的文件 ```php <?php // use Swoole\Client; use function Swoole\Coroutine\run; use Swoole\Database\RedisConfig; use Swoole\Database\RedisPool; //线程和处理进程根据CPU数量 $server->set([ 'task_worker_num' => 512,//task为100个进程, 'max_connection'=>10000, 'task_enable_coroutine'=>true,//task开启携程 'enable_coroutine' => true, //异步回掉支持协程序 'task_use_object' => true,//task回调使用对象 'dispatch_mode'=>3,//投递给空闲的worker 'daemonize'=>false,//守护模式 'log_file'=>__DIR__ .'/run_'.date('d').'.log', 'buffer_input_size'=>32*1024*1024,//单条数据最大10M 'buffer_output_size'=>32*1024*1024, 'hook_flags'=> SWOOLE_HOOK_TCP | SWOOLE_HOOK_UNIX | SWOOLE_HOOK_UDG | SWOOLE_HOOK_TLS | SWOOLE_HOOK_FILE | SWOOLE_HOOK_STREAM_FUNCTION | SWOOLE_HOOK_BLOCKING_FUNCTION | SWOOLE_HOOK_PROC | SWOOLE_HOOK_UDP | SWOOLE_HOOK_CURL | SWOOLE_HOOK_NATIVE_CURL | SWOOLE_HOOK_SOCKETS | SWOOLE_HOOK_STDIO,//一键协程化 'reload_async' => true, ]); //启动服务器 $server->start(); ``` ### 你期待的结果是什么?实际看到的错误信息又是什么? 日志如下 ``` [2022-10-08 15:36:34 @2221.0] WARNING Server::set_max_connection(): max_connection is exceed the maximum value, it's reset to 1024 [2022-10-08 15:36:34 @2221.0] WARNING Server::create(): max_connection must be bigger than 1065, it's reset to 1024 [2022-10-08 15:36:34 @2221.0] WARNING UnixSocket::UnixSocket(): socketpair() failed, Error: Too many open files[24] [2022-10-08 15:36:34 @2221.0] WARNING Server::create_task_workers(): [Master] create task_workers failed [2022-10-08 15:36:34 @2221.0] WARNING ProcessFactory::start(): failed to start [2022-10-08 15:36:34 @2221.0] ERROR php_swoole_server_rshutdown() (ERRNO 503): Fatal error: Swoole\Server::start(): failed to start server. Error: ProcessFactory::start(): failed to start in /www/wwwroot/network/0.1/start.php on line 92 ```
赞
0
分享
收藏
提问
分享
讨论
建议
公告
开发框架
CodeGalaxy
评论
2022-10-10
茆政
已解决
赞
0
回复
2022-10-16
Rango
设置`ulimit -n 65536`
赞
0
回复
微信公众号
热门内容
作者其它话题
- 如何发送udp广播
暂无回复的问答
- CodeGalaxy K3s 轻量集群节点之间如何实现负载均衡
- 关于openssl CURL WARNING swSSL_connect: SSL_connect(fd=69) failed. Error: error:141A318A:SSL routines:tls_process_ske_dhe:dh key too small[1|394]
- 多个模型如何进行事务异常回退?
- websocket开启wss报错
- 协程tcp服务器如何使用多进程?recv()方法接收信息,打印出来的pid一直是同一个。没用使用到多进程啊。