PHP Gettext problemleri (non-thread-safe gibi mi?)

2 Cevap php

Ben (PHP 5) web projeleri benim çeviriler işlemek için gettext kullanarak başlamak istiyorum. Iyi bir üne sahip yaygın olarak kullanılan bir standart olduğu için iyi bir seçim gibi görünüyor.

Ancak, ben de incompatibly sunucu hakkında bir şeyler duyuyorum ve olmayan-evreli olmak. Bu daha sonra kullanmak benim projeler için ne anlama geliyor? Ben birçok insan kullanmak şeyler inşa beri, benim kod çalışır çok önemlidir.

Veya dağıtım ve websevers düşük olmaya gettext kurulumu gibi önemli sorunları (insanlar hala PHP 4 kullanmak gibi) biz küçük sorunlar hakkında konuşuyor musunuz?

2 Cevap

Bir gömülü PHP (örneğin Apache mod-php) kullanır ve (işçi-mpm ile Apache sunucusu gibi) konuları kullanır sunucusu çalışır eğer konu sorun geçerlidir.

So - iplik güvenlik sorunu sizin için dahi geçerli değildir:

  1. Eğer (bu konuları kullanmaz.) nginx sunucusu kullanmak
  2. Siz Fastcgi modunda ve PHP (dişli MPM ya da değil) ile Apache kullanmak
  3. Sen mod-php modunda olmayan dişli (prefork-MPM gibi) MPM ve PHP ile Apache kullanabilirsiniz.

Yani - default apache'nin dağıtımlarının en dişli olmayan prefork-MPM kullandığı yüklemek gibi varsayılan Apache ile insanların çoğu yüklemek, gettext parçacığı güvenli olmaması endişe olmamalı!

P.S. Ayrıca - Windows üzerinde Apache dişli olduğunu akılda tutmak.

Ben php manuel yorumlar kısmı ile biraz daha oynamak daha fazla bilgi .... gettext bölümünde kılavuzundan açıklamalardan birini yermek gerektiğini düşünüyorum

The GNU gettext library works on a per-process, not per-thread basis. This means that in a multi-user setting such as the Apache web server it will only work with a prefork MPM (i.e. one process per user). Worker and other threaded MPMs will not work.

In addition, many users control GNU gettext by setting system environment variables such as LANG. This is not a good solution for a web server environment due to an obvious race condition.

http://www.php.net/manual/en/gettext.setup.php