PHP 5.4およびDrupal 7


31

PHP 5.4はPHP 5.3よりも高速だと聞きました。

Drupal 7を5.4の下で実行しても大丈夫でしょうか、それともさまざまな貢献モジュールがサイトを破壊し始めるかもしれませんか?

とにかく、APCオペコードキャッシュ(おそらく5.4)を使用すると、まったく利点がありませんか?

ありがとう

回答:


28

私はPHP 5.4でDrupal 7を実行し始めましたが、通知と警告という形でわずかな問題しかありません。

7.12に加えて、PHPから問題が発生する問題を修正するには、次の2つのパッチが必要です。

http://drupal.org/files/menu-link-save-1338282-15-d7.patch

http://drupal.org/files/database-query-clone-1414412-11-d7_0.patch

これらのパッチの1つは-devにすでに適用されているため、7.13になり、もう1つは間もなく導入される可能性があります。私がすぐに考えることができるすべての場合において、5.4警告を引き起こす悪い習慣は配列キーの不正使用でした。

この最初のバージョンは次のようになります。

$some_key = function_call();
return $some_array[$some_key];

場合によっては、関数呼び出しは配列またはオブジェクトを返しますが、どちらも有効な配列キーではありません。PHP 5.3では、実際に、そして静かに起こることは次のようになります。

$some_key = function_call();
return $some_array[(string)$some_key];

しかし、PHP 5.4は、これがあなたの望むものではないかもしれないと警告しています。2番目のバージョンはまったく同じですが、その逆です。

$some_key = 'a_valid_key';
$may_be_a_string = function_call();
return $may_be_a_string[$some_key];

次のようなエラーメッセージが表示されます

不正な文字列オフセット 'a_valid_key'

$may_be_a_string有効な文字列インデックスは整数のみであるため、実際は常に配列ではなく文字列です。

問題は理解しやすく、修正プログラムは(ほとんど)簡単に適用できるため、いくつかのケースで、-devバージョンが既に更新されているか、パッチがキューに投稿されていることがわかりました。そのシンプルな性質。

いくつかのテストの後、5.4は実稼働環境で実行するのが「危険」だとは思わず、すでに小規模で個人的なサイトの実行を開始しています。他の人にも同じことをすることをお勧めします。これにより、新しいPHPバージョンの取り込みが歴史的に遅くなることを回避できます。

執筆時点では、APCの最新バージョン3.1.9 5.4 では機能しません。しかし、Gitから正常にビルドして使用しました。

APCを使用すると、PHPバージョンをアップグレードすることによるパフォーマンス上の利点は減る可能性がありますが、削除することはできません。


+1私はこれについて疑問に思っていました。Drupalのパフォーマンスが5.3から5.4に一般的に向上していることに気づきましたか?これまでの経験についてもう少し投稿してもかまわない場合は、答えに賞金を授与させていただきます:)
クライブ

いくつかの言葉でAPCを使用しても、速度が大幅に向上する可能性がある場合を除き、多分手間をかける価値はありません。
ジョン

@Clive、私はまだかなりの時間の間、私が意図するけれども、私はまだパフォーマンス測定をしていません。特に気になっていることはありますか?:)
レサリオン

ええ、そうですね:) 5.4にアップグレードするというアイデアをいじっていましたが、最近はほとんどすべてがDrupalのように思えるので、自分の人生がそれほど難しくなることはないはずです。サイトごとにいくつかのモジュールにパッチを適用しても問題ありませんが、すぐにメンテナンスが難しくなり、実稼働サーバーはまだ5.3であるため、問題が発生するかどうかはわかりません。そのようなことについてのコメント、または一般的に警告を引き起こしている「悪い慣行」についての少しの情報(自分のモジュールが正常であることを確認するため)は大いに役立ちます:)
Clive

私はできることで答えを更新しました。:) 5.3をインストールしたままにして、簡単に切り替えてパフォーマンステストを行うことができます。うまく行けば、ここに戻ってくるのを忘れないでください。
レサリオン

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.