问题标签 [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.
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?
在此先感谢并为我的英语感到抱歉
php - 多个消费者进程之间的内存中的php共享列表
我有多个 php 工作人员在 redis 上共享相同的引用列表(例如:每个主题的订阅消费者)
我愿意用任何能够快速列出/编辑/rpush/pop这个列表的系统替换redis(我在运行高频操作时遇到了一些麻烦,因为我有时会在那个列表中得到旧的引用)但还没有找到任何好的候选人
目的是模仿 php 中的多消费者 MQ,客户端通过 websocket 连接,将自己注册到多个队列,这些列表将队列绑定到他们的消费者,因为他们将随机订阅或取消订阅这些,有多个工作人员,这些列表应该是尽可能快速且一致(我的问题是:当消费者取消订阅或注销时,一名工作人员在读取 redis 密钥时可能仍会引用他,并尝试使用列表中的消息以发送给他,因为他allready 可能已断开连接..)
我已经尝试过使用 Swoole 和 redis 的方法,尽管整数的原子和键值注册表的表工作得很好,它不提供任何共享内存列表,然后我想在那个上替换 redis 以执行一个简单的理论 poc ..
我什至正在考虑进程间通信或使用信号来发送消息,如下所示:
有什么建议么 ?
php - 如何让 PHP 保持重新加载相同的文件
背景:
我设计了一个网站并制作了一个访问点,index.php
. 所以我可以在那里做一些全局设置。index.php
文件将解析请求 URI 并从客户端加载所需的文件。这是index.php
下面的文件示例。
问题:
该网站在 Apache 下运行良好。但是我把它移到 Swoole HTTP 服务器后,我遇到了一个我无法解决的问题。
在 Swoole 请求处理函数中,我遵循相同的设计并将所有请求传递给index.php
文件。然后index.php
file 将使用上面的代码找到所需的文件并返回输出缓冲区中的内容。这是 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_once
为include
,我遇到了同样的问题。我尝试使用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 存储库。
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.
laravel - 如何在 laravel-octane 中动态更改数据库连接?
我需要在 laravel-octane 或 laravel-swoole 包中动态更改数据库。我正在开发一个自定义的多租户系统。应用程序在没有 swoole/辛烷的情况下工作正常。
laravel - Laravel/Octane:如何重置路由控制器的状态
在 Laravel v9/Octane/Swoole 中,我在路由控制器中有私有属性,例如
看起来该属性在 Octane 下的请求之间是“共享的”。我有更多这样的控制器。如何确保控制器状态在每次请求时都被重置?我已经阅读了整个 Octane 文档几次,但仍然不清楚如何做到这一点。
laravel - Laravel Octane 事件监听器未触发
我正在使用 laravel 帆在 swoole 上运行 laravel 辛烷值。
我对 EventServiceProvider 进行了更改:
这是我的听众:
无论我尝试什么,这个事件监听器都不会被解雇。我试过清除缓存、composer dump-autoload、php artisan optimize、重新加载辛烷值、停止辛烷值并重新启动它。甚至停止 docker 容器并重新启动它们。没有任何效果。
它记录侦听器列表(包括 CreateUserTeam 侦听器),它会触发电子邮件通知,但不会触发其他侦听器。
如果有人有任何见解......请。我束手无策
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,尽管我在这里有点超出我的范围。