问题标签 [swoole]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
256 浏览

swoole - 如何使用 RedisPool 通过 Swoole websocket 管理多个 Redis 连接

我有一个 Swoole websocket 服务器,我想使用 RedisPool 管理多个 Redis 连接,以便在收到消息时为每个查询选择一个。当我尝试从我的 RedisPool 获取连接时,Swoole 输出错误“错误:未捕获的 Swoole\错误:必须在 @swoole-src/library/core/ConnectionPool.php:69 中的协程中调用 API”,所以我尝试了用 Co\Run 封装我的查询:

然后我得到“警告:Swoole\Coroutine\Scheduler::start(): eventLoop 已经创建。无法启动 Swoole\Coroutine\Scheduler”

我想我的 websocket 服务器已经启动了 eventLoop。有没有办法访问服务器 eventLoop 或其他方法来运行 Coroutine ?

0 投票
1 回答
964 浏览

php - 使用 laravel api 在 swoole 上启用 https

嗨,当我尝试通过 http 发送 api 请求时,我在启用 swoole 时遇到问题,运行https良好但我无法通过:laravel apihttps

卷曲http://127.0.0.1:8008/api/v1/search?include=searchplace

有用

卷曲https://127.0.0.1:8008/api/v1/search?include=searchplace

不行

在apache2 ubuntu上托管应用程序。

php --ri swoole

我需要帮助才能通过 swoole 启用我们的应用程序httpsapi请求

swoole 配置文件:

0 投票
0 回答
55 浏览

php - PHP无法在守护进程模式下创建目录

我正在使用 swoole/HTTP 服务器,并将其设置在 daemon:1 以使其在后台运行,但存在问题。

当我尝试在这种模式下创建目录时,PHP 做不到,并且没有 swoole 错误日志。

0 投票
1 回答
376 浏览

php - PHP-Swoole 错误 accept() failed, Error: Too many open files[24]

我已经在我的服务器上安装了 php/swoole 并使用Laravel swoole对其进行了配置

现在问题是一切正常,直到每秒总请求数增加超过 1000 个请求。
Swoole 将记录错误并且不响应用户!
我已将操作系统 ulimit number 设置为 50000
但仍然出现相同的错误!在互联网上搜索,一无所获!
Os Centos 7
Server 足以处理每秒超过 1k 的请求

如果您对此有任何经验,请与我分享

注意:
当 swoole 启动时,它也会记录此错误:
set_max_connection: max_connection is exceeded the maximum value, it's reset to 1024

0 投票
1 回答
731 浏览

php - PHP Swoole 通知 ERRNO 1005

当 Swoole 负载重且请求繁重时,我不断收到此日志:

[2021-01-24 16:07:22 *33833.2] 通知完成(ERRNO 1005):会话#21022 不存在
[2021-01-24 16:07:22 *33833.2] 通知完成(ERRNO 1005):会话# 21022 不存在
[2021-01-24 16:07:22 *33833.2] 通知完成 (ERRNO 1005): session#21022 不存在
[2021-01-24 16:07:22 *33833.2] 通知完成 (ERRNO 1005 ): session#21022 不存在
[2021-01-24 16:07:39 *33835.4] 通知完成 (ERRNO 1005): session#21025 不存在
[2021-01-24 16:07:39 *33835.4] 注意完成(ERRNO 1005):会话#21025 不存在
[2021-01-24 16:07:39 *33835.4] 通知结束(ERRNO 1005):会话 [21025] 已关闭


或者

[2021-01-23 14:07:22 *5300.3] 通知 php_swoole_http_onReceive (ERRNO 1005):会话 [10002] 已关闭
[2021-01-23 14:07:22 *5300.3] 通知 php_swoole_http_onReceive (ERRNO 1005):会话 [ 10042] 已关闭
[2021-01-23 14:08:21 *5326.29] 通知 php_swoole_http_onReceive (ERRNO 1005):会话 [10508] 已关闭
[2021-01-23 14:18:15 *5333.36] 通知完成 (ERRNO 1005 ): session#12755 不存在
[2021-01-23 14:18:15 *5333.36] 通知结束 (ERRNO 1005): session[12755] 已关闭

在示例中,我发送了总共 500k 个请求和 1k 个并发请求,它记录了这个错误并挂起!突然它挂了!
我的服务器是 Centos 7、8 GB RAM 和 4 个 CPU 核心。
Swoole 有 40 个工人、30 个 Master-Worker 和 8 个 Reactor。
即使在生产中也会发生这种情况。
有人可以帮助我或解释我为什么会发生这种情况,也许我该如何解决?
谢谢。

0 投票
1 回答
65 浏览

laravel - GZip 在 Laravel + OpenLiteSpeed 中不起作用

我创建了一个 Laravel 项目,并将其放在 OpenLightSpeed 网络服务器上。

一切正常,但 gzip 不起作用!

光速缓存设置已启用,但在 8000 端口上仍未启用 gzip。

OpenLiteSpeed GZip 设置

GZip 在 Laravel 之外完美工作。

0 投票
1 回答
81 浏览

php - 服务器上的 swoole hello world

我是 swoole 的新手,我在本地机器上成功完成了 hello world。但是当我在服务器上推送代码时它不起作用。我更改了服务器 url 和端口,但没有任何效果

当有人打开它时,我只想在我的 URL 上显示一条 Hello 消息。请对我有礼貌,因为我是新手。提前致谢

0 投票
1 回答
120 浏览

swoole - 如何使用 SWOOLE 异步执行函数?

我听说过关于 php 的Swoole项目的有希望的话。但是,在他们的文档/示例中,我只看到了服务器处理的实现(即如何设置网络服务器、回答请求等)。但是,我无法找到示例,如何简单地从 cli (即php myfile.php)触发异步函数,其中myfile.php可能包含(我的 undestranding)类似这样的Swoole\SomeAsyncFunion内容(只是 phseudo 名称):

因此,只需从 php-cli 异步执行多个函数。怎么做?使用parallel扩展名,我与描述的 () 完全相同, \parallel\run( function(){ ... } ); 但无法弄清楚如何处理 swoole。(我不需要任何网络服务器,只需要 cli)。

0 投票
1 回答
272 浏览

php - PHP Swoole协程,异步消息不异步

我正在运行 Swoole WebSocket 服务器,并且正在尝试在脚本运行时向最终用户发送消息。我遇到的问题是消息不是异步发送的,只有在脚本完成执行后才会发送。哪种方式违背了目的。

我的问题的精简版如下:

我的印象是协程中的命令将单独的线程一样执行,我的意思是线程不会关心父脚本线程中发生的事情,因为它正在做自己的事情。

情况似乎并非如此。在发送消息之前,脚本会继续执行,直到我们完成下面的“任务”,消息才最终被发送。我期待的顺序如下:

但我得到的顺序如下:

我对协程有什么误解?我已经将协程作为一个实际的独立 PHP 线程来执行。然后它起作用了,但这似乎有点适得其反,因为我认为协程线程。一切都必须在协程中才能工作吗?

0 投票
0 回答
109 浏览

php - 如何只为 100 个 laravel Web 服务器 php-fpm 进程创建一个 websocket 客户端连接?

1.我有一个laravel web服务器,有100个php-fpm进程

2.我有一个swoole websocket服务器

有人请求我的网络服务器,我每次都会使用新的网络套接字客户端向我的网络套接字服务器发送同步消息。

虽然我设置了 persistent=true,但它会新创建 100 个连接和 100 个 php-fpm 进程。

如何只为 100 个 laravel Web 服务器 php-fpm 进程创建一个 websocket 客户端连接?