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

swoole - 如何在 ubuntu 中安装 Swoole

只是我的问题是如何在Ubuntu 14.04 LTS中安装 Swoole

我试过了

我遇到了一些错误,已经在这里发布了

有没有其他方法可以安装相同的...

0 投票
1 回答
191 浏览

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 容器。

你遇到过这个问题吗?你是怎么解决这个问题的?

我们正在考虑创建一个自定义助手来删除所有视图助手容器,但如果这样做,我们必须更改很多视图文件以添加这个新的自定义助手。

提前致谢

0 投票
1 回答
1267 浏览

php - Swoole 服务器只能在 PHP CLI 模式下使用

我正在使用 Swoole 服务器和 slim 框架,尤其是这个库:

超薄 Swoole 链接

我遵循了教程,并给了我这个错误:

致命错误:Swoole\Server::__construct(): swoole_server 只能在 PHP CLI 模式下使用。在第 48 行的 /Users/powermilk/Documents/Proyectos/prueba/public/index.php

第 48 行代码如下:

我不明白如果我退出库代码一切正常,为什么会发生这种情况,但我无法使用 Swoole 运行 slim。

服务器在 Nginx 上运行。

0 投票
1 回答
298 浏览

php - Pachico Slim/swoole 和 Eloquent ORM

我已经设置了以下库:

https://github.com/pachico/slim-swoole

但是当我尝试使用 Eloquent ORM 运行查询时,我不能,它需要很长时间才能给出错误

我知道我不能将 PDO 与异步框架一起使用,但我怎样才能让 Eloquent ORM 工作?

0 投票
2 回答
1532 浏览

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?

非常感谢。

0 投票
2 回答
794 浏览

php - PHP/Swoole Http Server - 如何动态加载 ssl?

我需要根据流程请求即时加载不同的 ssl 证书。我尝试在下面的代码中执行此操作,但服务器仍在处理请求时加载 cert1 证书,而不是像我在代码中尝试执行的那样加载 cert2。

如何动态重新加载不同的证书?可能吗?

代码示例:

0 投票
1 回答
509 浏览

php - 如何在 laravel 中使用 swoole 进行正确的路由和控制器?

我按照说明安装了所有东西,项目开始了: 在此处输入图像描述

我在 Github 上阅读了wiki,第 7 点是这个溃败示例:

现在,当它连接时(我用来测试)只有一条消息hello word,而我过去发送的每条消息都没有答案。

为什么?

如何在laravel中使用swoole进行正确的路由和控制器?

0 投票
1 回答
285 浏览

php - 您是否需要 Composer for async PHP 和像 ReactPHP 或 Swoole 这样的 HTTP 服务器?

据我了解 Composer 用于通过 PHP 提供的 SPL 函数自动加载类,或者至少注册在类不存在时调用的方法。然后,这必须在每次请求使用 Laravel 或 CakePHP 进行传统设置时发生……

我的问题是,Composer 如何在 Swoole HTTP Server 环境中工作,您可以自由地预先加载所有内容?在这种情况下甚至需要 Composer 吗?

一个 Swoole HTTP PHP 服务器的基本术语如下所示:

所以我可以事先加载所有内容,而不必担心必须调用任何自动加载脚本?

然后所有类都将在全局范围内,因此所有内容都已预加载并准备好在->on("request")函数回调中使用。

0 投票
2 回答
637 浏览

php - wrk 基准测试工具对于测试最快的 php 框架是否可靠

所以我尝试在我的本地主机(6 岁的 i7 电脑)上测试 php 框架,使用:

  • 没有数据库的 Laravel 我得到了:每秒 698 个请求
  • Cakephp:1,400 rps
  • Swoole:197,000 rps
  • Swoole 与 API 的中间件(fastroute 等):176,000 rps

在此处输入图像描述

是否wrk可靠,我可以告诉我的老板我的 api 每秒可以处理 170k 请求?

0 投票
1 回答
730 浏览

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

有人知道处理这种情况的正确方法吗?