ホームページ  >  記事  >  バックエンド開発  >  [Redis 学習 2] 複数の PHP バージョンでの phpredis 拡張機能のインストール

[Redis 学習 2] 複数の PHP バージョンでの phpredis 拡張機能のインストール

WBOY
WBOYオリジナル
2016-07-23 08:54:441343ブラウズ

背景: Redis をインストールした後、PHP で Redis を操作できるようにするために phpredis 拡張機能をインストールする必要があります。このマシンには複数の PHP バージョンがあります。インストール プロセス中に発生する落とし穴について説明します。

1 ダウンロード

git で Redis 拡張パッケージをダウンロードします

  1. git clone https://github.com/nicolasff/phpredis
コードをコピーします
2 マウントして設定します

シェルに phpize と入力します [注意: 複数の php バージョンを指定する必要があります]

  1. ./configure
コードをコピー

[phpize は php 拡張モジュールを拡張するために使用され、php は phpize を通じて構築できますプラグインモジュール】

注: (複数の php が含まれる場合、phpize は場所を指定する必要があります)

  1. cuihuan:phpredis cuixiaohuan$ ../php/bin/phpize
  2. 構成:
  3. PHP API バージョン: 20121113
  4. Zend モジュール API 番号: 20121212
  5. Zend Extension API No: 220121212
  6. autoconf が見つかりません。autoconf のインストールと
  7. $PHP_AUTOCONF 環境変数を確認してください。それから、このスクリプトを再実行してください。エラーを報告してください。それ以外の場合は、phpize
[work@cuixiaozhuai phpredis] $ ../php/bin/phpize 構成:
PHP API バージョン: 20041225

Zend モジュール API 番号: 20060613

Zend 拡張 API 番号: 22006 0519
[work@cuixiaozhuai phpredis]$ ./configure --with-php -config=/home/work/thirdparty/php5/bin/php-config
  1. コードをコピー
  2. php のバージョンが複数ある場合は、設定ファイルを指定する必要があります
./configure -- with-php-config=/home/work/thirdparty/php5/bin/php-config

コードをコピー
3 つのコンパイルとインストール
    make の後は、make test
  1. make install
cuihuan:phpredis cuixiaohuan$ make
を行うのが最善です。 。 。

ビルドが完了しました。
「make test」を実行することを忘れないでください。

cuihuan:phpredis cuixiaohuan$ make test
cuihuan:phpredis cuixiaohuan$ make install
  1. コードをコピー
  2. 4 つの問題修正
  3. 【修正されましたが、理由は正確ではない可能性があります】
  4. コンパイルエラーを起こす
.libs/redis_cluster.o(.data.rel.local+0x0): 関数 `ht_free_seed':
/home/work/ thirdparty/php5/php5/phpredis/redis_cluster.c:226: `arginfo_scan' の複数の定義

.libs/redis.o(.data.rel.local+0xe0):/home/work/thirdparty/php5/php5/p hpredis/redis.c:452: 最初にここで定義されました
/usr/bin/ld: 警告: シンボル `arginfo_scan' のサイズが .libs/redis.o の 160 から .libs/redis_cluster.o

.libs/ の 200 に変更されましたredis_cluster.o(.data.rel.local+0xe0): 関数 `create_cluster_context' 内:
/home/work/thirdparty/php5/php5/phpredis/redis_cluster.c:276: `arginfo_kscan' の複数の定義
.libs/ redis.o(.data.rel.local+0x0):/home/work/thirdparty/php5/php5/phpredis/redis.c:364: ここで最初に定義されました
    collect2: ld が 1 終了ステータスを返しました
  1. make: *** [redis.la] エラー 1
  2. コードをコピー
  3. 最初は、複数のバージョンの PHP によって生成されたインストールの問題だと思いました。PHP のバージョンと PHP の場所を指定するには、./configure を使用します。
  4. しかし、その効果にはまだ問題があります。
  5. 最後に、redis_cluester.c を変更することで、これら 2 つの重複がコメント化されました
40


41 /* HSCAN、SSCAN、HSCAN の引数情報 */

42 /*ZEND_BEGIN_ARG_INFO_EX(arginfo_kscan, 0, 0 、2 )
43 ZEND_ARG_INFO(0, str_key)
  1. 44 ZEND_ARG_INFO(1, i_iterator)
  2. 45 ZEND_ARG_INFO(0, str_pattern)
  3. 46 ZEND_ARG_INFO(0, i_count)
  4. 47 Z END_END_ARG_INFO();
  5. 48 * /
  6. 49
  7. 50 /* SCAN の引数情報 */
  8. 51 /*
  9. 52 ZEND_BEGIN_ARG_INFO_EX(arginfo_scan, 0, 0, 2)
  10. 53 ZEND_ARG_INFO(1, i_iterator)
  11. 54 ZEND_ARG_INFO(0, str_node )
  12. 55 ZEND_ARG_INFO (0, Str_pattern)
  13. 56 ZEND_ARG_INFO (0, I_Count)
  14. 57 ZEND_END_ARG_INFO ();五简单测试
    1. $redis = new Redis();
    2. $conn = $redis->connect('127.0.0.1',6379);
    3. echo "redis pass and status show< /br>";
    4. var_dump($redis->ping());
    5. $redis->set('test_key','test_value');
    6. echo "テスト セット val=".$redis-> get('test_key')."
      ";
    7. $redis->setnx('unique_key',"unique_val");
    8. $redis->setnx('unique_key',"unique_val_2");
    9. echo $redis->get("unique_key");
    10. sleep(60);
    11. echo '存在します'.$redis->exists('test_60s');
    12. echo '値がありません'.$ redis->get('test_60s');
    13. $redis->delete('test_key','test_60s');
    复制代

    个人小站翻訳链接

redis、php、phpredis


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