问题标签 [openswoole]
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.
php - 使用 mezzio swoole/openswoole 定义全局常量
我试图设置一个全局常量,以后所有 php swoole 进程和线程都可以访问它,但它似乎不可见或其他东西
这是我的 index.php - 几乎是香草 mezzio - 我只看到APPROOT常量:
但是当我尝试在其中一个中间件中引用/使用该常量时出现错误:
我收到此错误:
错误未定义常量“APPROOT”
为什么?那是因为 swoole 上下文之外的所有变量都被丢弃了,而我在 swoole 上下文之外设置了这个?
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 存储库。
laravel - 如何在 laravel-octane 中动态更改数据库连接?
我需要在 laravel-octane 或 laravel-swoole 包中动态更改数据库。我正在开发一个自定义的多租户系统。应用程序在没有 swoole/辛烷的情况下工作正常。