问题标签 [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.
zend-framework - Swoole http 服务器中的 Zend View 行为
我们正面临一个使用 Zend View 并在 swoole http 服务器中运行的 Zend Expressive 应用程序的奇怪行为。此行为与单例模式有关。
我们已将 Zend Expressive 配置为在 swoole http 服务器中运行 - https://docs.zendframework.com/zend-expressive-swoole/ - 并且所有 api 编程工作都没有问题(swoole 是火箭!)
但是我们已经尝试进行下一步,我们尝试通过 swoole http 服务器执行一个 web 界面。
在那里,我们发现了奇怪的行为。为了简化我的问题(我们使用了很多视图助手),我们的 Web 界面与 Zend View 一起使用并使用了 headTitle 助手。当您第一次加载 Web 界面时,一切正常,但是当您重新加载页面时,您会看到元标题重复。
我们的处理程序是下一个
我们的观点是下一个
在 Google 中搜索,我们在https://framework.zend.com/blog/2018-03-21-expressive-swoole.html中发现Zend 的团队遇到了类似的问题:
但是,对于异步服务器,每个请求都将使用相同的实例。通常,对 PSR-7 消息实例的操作将创建新实例,因为它们实现的接口被指定为不可变的。不幸的是,由于 PHP 语言的技术限制,我们无法使响应消息的主体不可变。这意味着如果一个进程写入该主体,然后是后续进程——甚至是那些并行执行的进程!— 将收到相同的更改。在最好的情况下,这可能会导致重复的内容,在最坏的情况下,会导致提供不正确的内容或执行信息泄露!
他们已经解决了
为了应对这些情况,我们修改了我们在依赖注入容器中注册的 Psr\Http\Message\ResponseInterface 服务:它现在返回的不是接口实例,而是能够生成实例的工厂
但是检查 Zend Framework 类,我们发现我们遇到了另一个问题,因为解决方案是在代码中实现的,并且对 apis 的所有请求都是正确的
在 zend-expressive-swoole/src/ConfigProvider.php 你可以看到
然后我们改变观点并检查 zend 视图助手,我们发现视图助手 HeadTitle 扩展自 Container\AbstractStandalone
查看这个 AbstractStandalone 我们发现在构造函数方法中,容器是通过单例加载的
这是问题所在。使用 Zend Expressive Swoole 模块,每个请求和每个响应都是独立的,但会反复使用同一个 Singleton 容器。
你遇到过这个问题吗?你是怎么解决这个问题的?
我们正在考虑创建一个自定义助手来删除所有视图助手容器,但如果这样做,我们必须更改很多视图文件以添加这个新的自定义助手。
提前致谢
php - Swoole 服务器只能在 PHP CLI 模式下使用
我正在使用 Swoole 服务器和 slim 框架,尤其是这个库:
我遵循了教程,并给了我这个错误:
致命错误:Swoole\Server::__construct(): swoole_server 只能在 PHP CLI 模式下使用。在第 48 行的 /Users/powermilk/Documents/Proyectos/prueba/public/index.php
第 48 行代码如下:
我不明白如果我退出库代码一切正常,为什么会发生这种情况,但我无法使用 Swoole 运行 slim。
服务器在 Nginx 上运行。
php - Pachico Slim/swoole 和 Eloquent ORM
我已经设置了以下库:
https://github.com/pachico/slim-swoole
但是当我尝试使用 Eloquent ORM 运行查询时,我不能,它需要很长时间才能给出错误
我知道我不能将 PDO 与异步框架一起使用,但我怎样才能让 Eloquent ORM 工作?
php - Swoole php 模块:未定义符号:spl_ce_Countable 问题
我正在尝试在我的机器上安装 swoole
第一的 :
然后我需要一个php模块
该脚本在我的文件夹中创建了一个 swoole.so,所以我将它添加到我的 php.ini 中:
当我尝试 php -v 时,我得到了:
PHP警告:PHP启动:无法加载动态库'/usr/lib/php/20151012/swoole.so'(试过:/usr/lib/php/20151012/swoole.so(/usr/lib/php/20151012/ swoole.so:未定义符号: spl_ce_Countable ), /usr/lib/php/20170718//usr/lib/php/20151012/swoole.so.so (/usr/lib/php/20170718//usr/lib/php/ 20151012/swoole.so.so:无法打开共享对象文件:没有这样的文件或目录))在第 0 行的未知 PHP 7.2.13-1+ubuntu16.04.1+deb.sury.org+1(cli)(内置: 2018 年 12 月 7 日 08:07:08) (NTS) 版权所有 (c) 1997-2018 PHP Group Zend Engine v3.2.0, 版权所有 (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.13-1+ubuntu16.04.1+ deb.sury.org+1,版权所有 (c) 1999-2018,由 Zend Technologies 和 Xdebug v2.6.1 提供,版权所有 (c) 2002-2018,由 Derick Rethans
这是什么错误:未定义的符号:spl_ce_Countable?
非常感谢。
php - PHP/Swoole Http Server - 如何动态加载 ssl?
我需要根据流程请求即时加载不同的 ssl 证书。我尝试在下面的代码中执行此操作,但服务器仍在处理请求时加载 cert1 证书,而不是像我在代码中尝试执行的那样加载 cert2。
如何动态重新加载不同的证书?可能吗?
代码示例:
php - 您是否需要 Composer for async PHP 和像 ReactPHP 或 Swoole 这样的 HTTP 服务器?
据我了解 Composer 用于通过 PHP 提供的 SPL 函数自动加载类,或者至少注册在类不存在时调用的方法。然后,这必须在每次请求使用 Laravel 或 CakePHP 进行传统设置时发生……
我的问题是,Composer 如何在 Swoole HTTP Server 环境中工作,您可以自由地预先加载所有内容?在这种情况下甚至需要 Composer 吗?
一个 Swoole HTTP PHP 服务器的基本术语如下所示:
所以我可以事先加载所有内容,而不必担心必须调用任何自动加载脚本?
然后所有类都将在全局范围内,因此所有内容都已预加载并准备好在->on("request")
函数回调中使用。
doctrine - Doctrine EntityManager 使用 Swoole 关闭
我有一个运行 'swooletw/laravel-swoole' 来处理请求的 Laravel 应用程序。Doctrine 被用作 ORM,使用laravel-doctrine/orm
.
通常,如果学说抛出了一些 ORMException,它会关闭应该在下一次请求时自动打开/重置的 EntityManager。但是,当我使用 swoole 时,它不会简单地发生并且 EntityManager 保持关闭,除非重新启动 swoole 工作者。
我试图通过检查 entitmanager 是否已关闭并在中间件中将其重置来解决此问题。因此,在下一次请求时,它应该提供一个新的实体管理器。
理想情况下它应该修复它,但我得到“EntityManager 已关闭”。例外。
我假设我也需要从 laravel 容器中刷新它。
所以我将代码更改为:
现在我正在坚持这个:
ErrorException: Undefined index: 000000005ba55063000000001b2f101d in file /***/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php on line 3003
有人知道处理这种情况的正确方法吗?