ホームページ  >  記事  >  php教程  >  php5.4 と php-redis の間の競合の解決を記録します。

php5.4 と php-redis の間の競合の解決を記録します。

WBOY
WBOYオリジナル
2016-06-21 08:48:50972ブラウズ

最近、Ubuntu ソースの更新により、元の新しいソースがローカル システム ライブラリの一部のライブラリと競合し、システム デスクトップが異常に表示されるようになりました。その後、再インストールし、php5.4.9 を新たにインストールし、redis もインストールする必要がありました。 、php-redis 拡張機能、php-redis 拡張機能 2,10。しかし、元のプロジェクトを公開するとすぐに、nginx 502 エラーが報告されました (nginx 502 エラーは本当に頭の痛い問題です)。 nginx ログを開いて表示します

[エラー] 29229#0: *1403 recv() が失敗しました (104: ピアによる接続リセット) アップストリームからの応答ヘッダーの読み取り中に、クライアント: 127.0.0.1、サーバー:

何を言っているのかわかりません。その後、php-fpm エラー ログを開いてログを取得しました

[08-Oct-2013 21:22:23] 警告: [プール www] 子 12026 は開始から 5.997917 秒後にシグナル 11 (SIGSEGV - コア ダンプ) で終了しました

[08-Oct-2013 21:22:23] 通知: [プール www] 子 12034 が開始されました

確かなことの 1 つは、php-fpm が特定の時点の後にプロセスを再起動したということです。まだ手がかりがありません。インターネットでいろいろ検索したところ、便利な追跡方法を見つけました。

1. php-fpm をセットアップし、ワークプロセスを 1 つだけ開始します

2. php-fpm を再起動し、ps aux grep php-fpm を実行してワークプロセス番号 pid を取得します

3. strace -p pid

私が得た情報は次のとおりです

getcwd("/home/www/wms2.xxxx.com", 4096) = 26

lstat("/home/www/wms2.xiaomi.com/./RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xiaomi.com/protected/vendor/wms/api/RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xiaomi.com/protected/vendor/wms/RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xiaomi.com/protected/extensions/log/RWebUser.php", 0x7ffff4e30a10) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xiaomi.com/protected/modules/rights/components/RWebUser.php", {st_mode=S_IFREG0777, st_size=2945, ...}) = 0

lstat("/home/www/wms2.xiaomi.com/protected/modules/rights/components", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0

lstat("/home/www/wms2.xiaomi.com/protected/modules/rights", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0

lstat("/home/www/wms2.xiaomi.com/protected/modules", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0

open("/home/www/wms2.xiaomi.com/protected/modules/rights/components/RWebUser.php", O_RDONLY) = 5

fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2945, ...}) = 0

mmap(NULL, 2945, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000

mmap(NULL, 266240, PROT_READPROT_WRITE, MAP_PRIVATEMAP_ANONYMOUS, -1, 0) = 0x7fd9b442f000

ムンマップ(0x7fd9b4804000, 2945) = 0

閉じる(5) = 0

getcwd("/home/www/wms2.xxx.com", 4096) = 26

lstat("/home/www/wms2.xxx.com/./XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xxx.com/protected/vendor/wms/api/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xxx.com/protected/vendor/wms/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xxx.com/protected/extensions/log/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xxx.com/protected/modules/rights/components/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xxx.com/protected/modules/rights/XMCCacheHttpSession.php", 0x7ffff4e31060) = -1 ENOENT (そのようなファイルまたはディレクトリはありません)

lstat("/home/www/wms2.xxx.com/protected/components/XMCCacheHttpSession.php", {st_mode=S_IFREG0777, st_size=2612, ...}) = 0

open("/home/www/wms2.xxx.com/protected/components/XMCCacheHttpSession.php", O_RDONLY) = 5

fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2612, ...}) = 0

mmap(NULL, 2612, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000

ムンマップ(0x7fd9b4804000, 2612) = 0

閉じる(5) = 0

sendto(4, "get 6cacd9674ad21aa083b5032b1a29"..., 39, MSG_DONTWAITMSG_NOSIGNAL, NULL, 0) = 39

recvfrom(4, 0x2806d88, 8196, 64, 0, 0) = -1 EAGAIN (リソースが一時的に利用不可)

poll([{fd=4, events=POLLIN}], 1, 5000) = 1 ([{fd=4, revents=POLLIN}])

recvfrom(4, "VALUE 6cacd9674ad21aa083b5032b1a"..., 8196, MSG_DONTWAIT, NULL, NULL) = 128

lstat("/home/www/wms2.xxx.com/yii/web/CHttpCookie.php", {st_mode=S_IFREG0777, st_size=2772, ...}) = 0

lstat("/home/www/wms2.xxx.com/yii/web", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0

open("/home/www/wms2.xxx.com/yii/web/CHttpCookie.php", O_RDONLY) = 5

fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2772, ...}) = 0

mmap(NULL, 2772, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000

ムンマップ(0x7fd9b4804000, 2772) = 0

閉じる(5) = 0

stat("/home/www/wms2.xxx.com/protected/extensions/redis/XMRedis.php", {st_mode=S_IFREG0777, st_size=2672, ...}) = 0

lstat("/home/www/wms2.xxx.com/protected/extensions/redis/XMRedis.php", {st_mode=S_IFREG0777, st_size=2672, ...}) = 0

lstat("/home/www/wms2.xxx.com/protected/extensions/redis", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0

lstat("/home/www/wms2.xxx.com/protected/extensions", {st_mode=S_IFDIR0777, st_size=4096, ...}) = 0

open("/home/www/wms2.xxx.com/protected/extensions/redis/XMRedis.php", O_RDONLY) = 5

fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0

fstat(5, {st_mode=S_IFREG0777, st_size=2672, ...}) = 0

mmap(NULL, 2672, PROT_READ, MAP_SHARED, 5, 0) = 0x7fd9b4804000

ムンマップ(0x7fd9b4804000, 2672) = 0

閉じる(5) = 0

ソケット(PF_INET6、SOCK_DGRAM、IPPROTO_IP) = 5

閉じる(5) = 0

ソケット(PF_INET、SOCK_STREAM、IPPROTO_IP) = 5

fcntl(5, F_GETFL) = 0x2 (フラグ O_RDWR)

fcntl(5, F_SETFL, O_RDWRO_NONBLOCK) = 0

connect(5, {sa_family=AF_INET, sin_port=htons(22122), sin_addr=inet_addr("10.237.36.231")}, 16) = -1 EINPROGRESS (操作は進行中です)

poll([{fd=5, events=POLLINPOLLOUTPOLLERRPOLLHUP}], 1, 3000) = 1 ([{fd=5, revents=POLLOUT}])

getsockopt(5, SOL_SOCKET, SO_ERROR, [0], [4]) = 0

fcntl(5, F_SETFL, O_RDWR) = 0

setsockopt(5, SOL_TCP, TCP_NODELAY, [1], 4) = 0

poll([{fd=5, events=POLLINPOLLPRIPOLLERRPOLLHUP}], 1, 0) = 0 (タイムアウト)

sendto(5, "*2rn$4rnAUTHrn$9rnxm_wms_rsrn", 29, MSG_DONTWAIT, NULL, 0) = 29

poll([{fd=5, events=POLLINPOLLPRIPOLLERRPOLLHUP}], 1, 0) = 0 (タイムアウト)

poll([{fd=5, events=POLLINPOLLERRPOLLHUP}], 1, 3000) = 1 ([{fd=5, revents=POLLIN}])

recvfrom(5, "+OKrn", 8192, MSG_DONTWAIT, NULL, NULL) = 5

--- SIGSEGV (セグメンテーション違反) @ 0 (0) ---

プロセス 6011 が切り離されました

見てわかるように、XMRedis の実行後にプロシージャ 6011 が終了します。php-redis の問題が発生する可能性があります。

继续追查最終终発行现了有段代网问题

パブリック関数 conn() {

{

を試してください

$this->_redis->pconnect($this->host, $this->port, $this->timeout);

// クライアント オプションを設定します。接続後に行う必要があります

//var_dump(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);exit();

$this->_redis->setOption(Redis::OPT_SERIALIZER,Redis::SERIALIZER_PHP);

//$this->_redis->setOption(0, 0);

$this->_redis->auth("xm_wms_rs");

$this->connected = true;

} catch (RedisException $e) {

throw new CHttpException(500, "Redis でエラーが発生しました:" . $e->getMessage());

}

}

色のコードを使用する段階では 502 エラーが発生しますが、色のコードを使用する場合は問題ありません。

setOption これは神马东西呢?查了下php-redis api

$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_NONE);   // データをシリアル化しません 不連続列化データ

$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);    // 組み込みのシリアライズ/アンシリアライズを使用する 用php内置的順序化

$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_IGBINARY);   // igBinary を使用します。シリアル化/シリアル化解除用扩展IGBINARY序列化

$redis->setOption(Redis::OPT_PREFIX, 'myAppName:'); // すべてのキーにカスタム プレフィックスを使用します。 redis key前缀

$redis->setOption(Redis::OPT_SERIALIZER, Redis::SERIALIZER_PHP);  用此就报502

何のためのphp内置の順序化のため会出错呢?

その後、IGBINARY 拡張がインストールされましたが、実行されていません。最後に php-redis が最新のバージョン 2.24 をインストールして再実行され、完全に完了しました。



声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。