問題タブ [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 に答える
191 参照

zend-framework - Swoole http サーバーでの Zend View の動作

Zend View を使用し、swoole http サーバーで実行されている Zend Expressive アプリケーションで奇妙な動作に直面しています。この動作は Singleton パターンに関連しています。

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 言語の技術的な制限により、応答メッセージの本文を不変にすることはできませんでした。これは、1 つのプロセスがその本体に書き込みを行うと、後続のプロセス、または並行して実行されているプロセスでさえも実行されることを意味します。— 同じ変更を受け取ります。これは、最良のシナリオではコンテンツの複製につながり、最悪の場合、誤ったコンテンツを提供したり、情報漏えいを実行したりする可能性があります!

そして、彼らはそれを解決しました

これらの状況に対処するために、依存性注入コンテナーに登録する Psr\Http\Message\ResponseInterface サービスを変更しました。これは、インターフェイスのインスタンスではなく、インスタンスを生成できるファクトリを返すようになりました。

しかし、Zend Framework クラスを調べると、別の問題があることがわかりました。これは、ソリューションがコードに実装されており、API に対して行われたすべてのリクエストが正しかったためです。

zend-expressive-swoole/src/ConfigProvider.php で確認できます

次に、視点を変更して zend ビュー ヘルパーを調べたところ、ビュー ヘルパーの HeadTitle が Container\AbstractStandalone から拡張されていることがわかりました。

この AbstractStandalone を見ると、コンストラクター メソッドでコンテナーがシングルトンを介してロードされていることがわかりました。

これが問題です。Zend Expressive Swoole モジュールでは、すべてのリクエストとすべてのレスポンスが独立していますが、同じシングルトン コンテナーが何度も使用されます。

この問題に直面したことがありますか?これをどのように解決しましたか?

すべてのビュー ヘルパー コンテナーを削除するカスタム ヘルパーを作成することを考えていますが、そうすると、この新しいカスタム ヘルパーを追加するために多くのビュー ファイルを変更する必要があります。

前もって感謝します

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 ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0、Copyright (c) 1998-2018 Zend Technologies with Zend OPcache v7.2.13-1+ubuntu16.04.1+ deb.sury.org+1、Copyright (c) 1999-2018、Zend Technologies と Xdebug v2.6.1、Copyright (c) 2002-2018、Derick Rethans

このエラーは何ですか: undefined symbol: spl_ce_Countable ?

どうもありがとう。

0 投票する
2 に答える
794 参照

php - PHP/Swoole HTTP サーバー - どうすれば動的に ssl をロードできますか?

プロセス要求に応じて、さまざまな SSL 証明書をオンザフライでロードする必要があります。以下のコードのように実行しようとしましたが、サーバーは、コードで実行しようとしている cert2 ではなく、リクエストの処理時にまだ cert1 証明書をロードしています。

その場でさまざまな証明書を動的に再ロードするにはどうすればよいですか? 出来ますか?

コード例: