PHP 5.4和Drupal 7


31

我听说PHP 5.4比PHP 5.3快。

Drupal 7在5.4以下运行是否可以,或者各种贡献的模块可能开始破坏该站点?

无论如何,如果我使用APC操作码缓存(可能是5.4),根本不会提供任何好处?

谢谢

Answers:


28

我已经开始自己在PHP 5.4上运行Drupal 7,并且只有小问题,例如通知和警告。

在7.12之上,您将需要以下两个补丁来解决导致PHP抱怨的问题:

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

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

这些修补程序之一已被应用到-dev,因此将在7.13中使用,而另一个修补程序可能很快就会发布。在所有我可以立即想到的情况下,导致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警告说,这可能不是您想要的。第二个版本完全相同,但反之亦然。

$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我一直在想这个。您是否注意到从5.3到5.4总体上Drupal的性能提升了吗?如果您现在不愿意发表更多有关您的经历的信息,我很乐意为您的答案提供赏金:)
Clive

简而言之,拥有APC可能不值得麻烦,除非速度可能会大大提高,但事实并非如此。
约翰,

@Clive,尽管我打算(现在已经有一段时间了),但我尚未进行性能测量。您是否特别想知道什么?:)
Letharion'4

是的,是的:)我一直在考虑升级到5.4的想法,但是这些天我所做的几乎所有事情似乎都是Drupal,因此我需要确保它不会使我的生活变得更加困难。我可以为每个站点修补几个模块很好,但是我担心它很快将难以维护,而且我们的生产服务器仍处于5.3版,因此我不确定这是否会引起任何问题。您对此类事情的任何评论,或有关通常会引起警告的“不良做法”的一些信息(以确保我自己的模块正常)将是非常有用的:)
Clive

我已尽我所能更新了答案。:)我安装了5.3,因此我可以轻松地切换回去并进行一些性能测试。希望我会记得回到这里后回到这里。
Letharion'4

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.