PHP 5.4와 Drupal 7


31

PHP 5.4가 PHP 5.3보다 빠르다고 들었습니다.

Drupal 7이 5.4에서 작동해도 괜찮습니까? 아니면 다양한 기여 모듈이 사이트를 중단하기 시작할 수 있습니까?

어쨌든, APC opcode 캐시, 5.4를 사용하면 전혀 이점을 제공하지 않습니까?

감사

답변:


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 이것에 대해 궁금했습니다. Drupal의 성능이 일반적으로 5.3에서 5.4로 향상되는 것을 보셨습니까? 지금까지 귀하의 경험에 대해 조금 더 신경 쓰지 않으시면 답변에 대해 현상금을 수여 해 드리겠습니다 :)
Clive

APC가있는 몇 마디로, 속도가 크게 증가 할 수있는 경우를 제외하고는 문제가되지 않습니다.
john

@Clive, 나는 (지금 꽤 오랫동안) 의도했지만 성능 측정을 아직 ​​수행하지 않았습니다. 특히 궁금한 점이 있습니까? :)
Letharion

일종의, 예 :) 나는 5.4로 업그레이드한다는 아이디어로 놀아 왔지만 요즘 거의 모든 것이 Drupal 인 것처럼 내 인생을 너무 어렵게 만들지 않아야합니다. 사이트 당 몇 개의 모듈을 패치해도 괜찮지 만 곧 유지 관리가 어려워 질지 걱정됩니다. 프로덕션 서버는 여전히 5.3 버전이므로 문제가 발생할지 확실하지 않습니다. 이런 종류의 일에 대한 의견이나 "나쁜 습관"이 무엇인지에 대한 정보는 일반적으로 경고를 일으키는 원인이됩니다 (내 모듈이 제대로 작동하는지 확인하는 데 큰 도움이 됨).
Clive

나는 할 수있는 것으로 답변을 업데이트했습니다. :) 5.3을 계속 설치하여 쉽게 전환하고 성능 테스트를 수행 할 수 있습니다. 잘만되면 나는 여기에 돌아 왔을 때를 기억할 것입니다.
Letharion

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.