0

私はphpwebsocketアプリケーションに取り組んでいます。phpwebsocketのインスタンスをアプリのどこにでも保存する必要があります。私は解決策を見つけました。それはAPCを使ったものです。そして、それは機能しません。問題は、phpコンソールで実行しているスクリプトphpからapc_store('foo'、'bar')を使用してファイルにアクセスすると、機能しないことです。(ブラウザを使用して)httpリクエストを実行すると、実際には機能しますが、実際にはphpコンソールからphpwebsocketを実行する必要があります。

php.iniの場合:

[APC]
extension=php_apc.dll
apc.enabled = 1
apc.enable_cli = 1 
apc.shm_segments = 1
apc.shm_size = 64M
apc.max_file_size = 10M
apc.stat = 1

ありがとう。

4

2 に答える 2

0

php-cliphp-cgiAPCキャッシュをまたはと共有しませんphp-fpm。実際、APCキャッシュをそれ自体と共有しているのかどうかはわかりません。

さらに、ストリームやソケットなどのリソース/インスタンスをAPC内に保存することはできません。シリアル化されたオブジェクトのみを保存できます。

それ以来、http://memcached.org/を使用してデータをキャッシュします。サーバーを追加すると、サーバーも同じキャッシュにアクセスできるようになります。APC / XCacheは、単一のサーバーでのみ機能します。

于 2012-05-02T18:32:28.277 に答える
0

APCは、キャッシュを収集してプロセススペース内に保存します。コンソールアプリは毎回新しいプロセスを開始するため、APCキャッシュはクリーンに開始され、パフォーマンスは向上しません。Apache modの場合、プロセススペースはApache Webサーバー自体であり、存続します。

1)wget URLスタンドアロンのコンソールphpスクリプトの代わりにコンソールで実行するのはどうですか?出力が必要な場合は、を使用してwget -O - URLください。APCは問題なく動作します。ここでの制限は、スクリプトが物理ファイルにアクセスできないことです。

2)コンソールのphpコンソールスクリプト内からfile_get_contents(URL)を実行し、コンテンツをダンプすることができます。そうすれば、コンソールから呼び出すことができ、共有APCキャッシュの利点もあります。ここでも物理ファイルにアクセスできますが、問題が1つあります。重大なセキュリティ上の理由から、ファイルとしてのURLフェッチはデフォルトでオフになっています。php.iniでオンにする必要がある場合があります。本番ネットワークで使用する前に、ケースを注意深く確認してください。

http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

于 2012-05-03T01:35:31.933 に答える