问题标签 [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 投票
1 回答
41 浏览

laravel - 配置 swoole http-server 前面不带 nginx

如何在没有 nginx 的情况下配置 swoole http-server?我的问题是域路由。我在哪里可以为 laravel 辛烷中的 swoole http-server 配置特定域?我在我的服务器上配置了一个指向我的子域(api.domain.com、portal.domain.com)的 nginx。api 和 portal 都使用 octane 来处理请求。我想知道如何删除 nginx 并直接使用 swoole http-server?

在此先感谢并为我的英语感到抱歉

0 投票
0 回答
17 浏览

php - 多个消费者进程之间的内存中的php共享列表

我有多个 php 工作人员在 redis 上共享相同的引用列表(例如:每个主题的订阅消费者)

我愿意用任何能够快速列出/编辑/rpush/pop这个列表的系统替换redis(我在运行高频操作时遇到了一些麻烦,因为我有时会在那个列表中得到旧的引用)但还没有找到任何好的候选人

目的是模仿 php 中的多消费者 MQ,客户端通过 websocket 连接,将自己注册到多个队列,这些列表将队列绑定到他们的消费者,因为他们将随机订阅或取消订阅这些,有多个工作人员,这些列表应该是尽可能快速且一致(我的问题是:当消费者取消订阅或注销时,一名工作人员在读取 redis 密钥时可能仍会引用他,并尝试使用列表中的消息以发送给他,因为他allready 可能已断开连接..)

我已经尝试过使用 Swoole 和 redis 的方法,尽管整数的原子和键值注册表的表工作得很好,它不提供任何共享内存列表,然后我想在那个上替换 redis 以执行一个简单的理论 poc ..

我什至正在考虑进程间通信或使用信号来发送消息,如下所示:

有什么建议么 ?

0 投票
0 回答
22 浏览

php - 如何让 PHP 保持重新加载相同的文件

背景:

我设计了一个网站并制作了一个访问点,index.php. 所以我可以在那里做一些全局设置。index.php文件将解析请求 URI 并从客户端加载所需的文件。这是index.php下面的文件示例。

问题:

该网站在 Apache 下运行良好。但是我把它移到 Swoole HTTP 服务器后,我遇到了一个我无法解决的问题。

在 Swoole 请求处理函数中,我遵循相同的设计并将所有请求传递给index.php文件。然后index.phpfile 将使用上面的代码找到所需的文件并返回输出缓冲区中的内容。这是 Swoole 请求处理函数的示例。

从上面的代码可以看出,如果需要的文件是 PHP 文件,则将请求传递给index.php文件;如果一个文件是静态文件,例如css文件,我们直接获取静态文件内容。

所以现在当我访问该网站时,我输入了http(s)://website.com/home.php. 因为这是第一次index.php在 Swoole 中加载文件,所以很好,我可以在浏览器中正确看到页面。但是当我转到另一个页面时,例如http(s)://website.com/service.php,Swoole HTTP 服务器将需要再次包含 index.php 文件。然后,这一次getResponseContent函数什么也没返回。缓冲区中根本没有内容。我无法再次在缓冲区中加载 index.php 文件。

我试图解决这个问题,但失败了。

我的第一感觉是错误应该是关于include_once。所以我将其更改include_onceinclude,我遇到了同样的问题。我尝试使用require,我又遇到了同样的问题。

顺便说一句,我的php版本是7.4.3,Swoole版本是openswoole 4.10.0

请帮忙。任何反馈表示赞赏。

更新

苦苦挣扎了几天,不得不向 Swoole 团队询问。这是答复。https://github.com/swoole/swoole-src/issues/4605

将文件包装在函数中确实适用于这种情况。

顺便说一句,在处理这个问题时,我发现了一件有趣的事情。Openswoole 和 Swoole 现在不是一回事了。它们是单独的项目。在线阅读openswoole文档时,我以为Swoole在v4.7.1之后已经更名为openswoole。但事实是 Swoole 仍在自我发展。现在它的版本是 v4.8.x。只是给大家提个醒。不要将问题/问题发布到错误的 GitHub 存储库。

0 投票
0 回答
15 浏览

nginx - error laravel octane + swoole nginx khi cố gắng đăng nhập bằng Auth

i am using nginx, php8.0-fpm including octane - swoole running on port 8001, all is fine and fast until i try to login admin with Auth error 504 gateway time-out, what is going out.

0 投票
0 回答
23 浏览

laravel - 如何在 laravel-octane 中动态更改数据库连接?

我需要在 laravel-octane 或 laravel-swoole 包中动态更改数据库。我正在开发一个自定义的多租户系统。应用程序在没有 swoole/辛烷的情况下工作正常。

0 投票
0 回答
23 浏览

laravel - Laravel/Octane:如何重置路由控制器的状态

在 Laravel v9/Octane/Swoole 中,我在路由控制器中有私有属性,例如

看起来该属性在 Octane 下的请求之间是“共享的”。我有更多这样的控制器。如何确保控制器状态在每次请求时都被重置?我已经阅读了整个 Octane 文档几次,但仍然不清楚如何做到这一点。

0 投票
1 回答
19 浏览

laravel - Laravel Octane 事件监听器未触发

我正在使用 laravel 帆在 swoole 上运行 laravel 辛烷值。

我对 EventServiceProvider 进行了更改:

这是我的听众:

无论我尝试什么,这个事件监听器都不会被解雇。我试过清除缓存、composer dump-autoload、php artisan optimize、重新加载辛烷值、停止辛烷值并重新启动它。甚至停止 docker 容器并重新启动它们。没有任何效果。

它记录侦听器列表(包括 CreateUserTeam 侦听器),它会触发电子邮件通知,但不会触发其他侦听器。

如果有人有任何见解......请。我束手无策

0 投票
0 回答
9 浏览

php - 是否可以使用 swoole 运行 php-fpm?

网上搜索说 php-fpm vs swoole,swoole 取代了对它的需求。但我使用 php-fpm 以便我可以通过处理程序控制每个目录使用的 php 版本。我正在运行的 php 版本之一使用 php 5.4,所以如果 swoole 有某种方法可以为多个版本制作处理程序,我想我可以为我的更高版本关闭 fpm 服务并在 htaccess 等效项中使用 swoole 处理程序,如果那甚至存在。我想使用 websockets,因为它是一个宠物项目,我在 github 上找到了一个 repo,它在 php 中使用并行的多线程 websockets,尽管我在这里有点超出我的范围。