Portál AbcLinuxu, 2. května 2025 08:41
PHP (resp. gettext) pak do restartu budou používat staré překlady...
Já myslel, že při každém zavolání CGI skriptu se všechny inicializace (včetně otevření katalogu) provádějí znovu.
Navíc aktualizaci často dělá balíčkovací systém a vyžadovat nějaký konkrétní postup přepisovaní souboru je zbytečná komplikace.
To je ale chyba balíčkovacího systému / balíčku. Takhle vám může sletět libovolná aplikace, které se zaktualizoval katalog. (Nevím, jestli zrovna katalogy, ale alespoň u profláknutých démonů tohle Debian řeší.)
Na druhou stranu by se to dalo vyřešit, kdyby gettext používal nějakou copy-on-write metodu. (I když teď koukám, že mmap(…, MAP_PRIVATE, …) tohle taky neřeší, zamykání při otevření taky neexistuje. Hm, POSIX by potřeboval pořádný kopanec databázovými souborovými systémy.)
V praxi se spíš používá FastCGI nebo moduly to webserveru…, které běží neustále
To jsem nikdy nezkoumal, ale nějakým způsobem se musí interpret dozvědět, že teď se bude pouštět úplně nový skript a že by měl zahodit vše, co patřilo starému skriptu. Netvrďte mi, že není možné nakonfigurovat, co vše se má provést při takovém resetu (třeba zavolat bindtextdomain())?
klasické CGI… snad nikdo v podukčním nasazení nepoužívá
90% uživatelů… shodí webserver svému poskytovateli
Důvod nasadit CGI se vždycky najde ;).
Dále to máme možnost měnit EUID, limity a vůbec všechno, co souvisí s procesy, každému uživateli webhostingu. Pak taky si uživatel může vybrat verzi dynamického jazyka a nabízí se spousta jiných pozitiv a jistot.
Zas až tak moc jsem vnitřnosti gettextu a PHP nezkoumal, ale můj PHP skript jako jednu z prvních věcí (po zjištění jaký jazyk má použít) provede bindtextdomain a přesto PHP při změně .mo souboru segfaultuje. V PHP je chyba zavřená s tím, že je to vlastnost gettextu.To jsem nikdy nezkoumal, ale nějakým způsobem se musí interpret dozvědět, že teď se bude pouštět úplně nový skript a že by měl zahodit vše, co patřilo starému skriptu. Netvrďte mi, že není možné nakonfigurovat, co vše se má provést při takovém resetu (třeba zavolat bindtextdomain())?
Tak jsem si prověřil gettext v céčku a máte pravdu.
Ta potvora otevírá katalogy teprve až v gettext() a co je ještě horší – opakovaný (bind)textdomain() staré katalogy neuzavře. Přitom v manuálu se píše, že účinek (bind)textdomain() je platný jen do jejího dalšího zavolání.
Pánové v Sunu se asi špatně vyspali, když vymýšleli gettext.
Narazila jsem na tento inzerát náhodně a nerozumím.Hledáte-li opravdu kvalitního překladatela z a do angličtiny,věděla bych.Je velmi různá kvalita.Pokud žádáte výbornou,záleží na výši odměny a spolehlivosti placení.
Máte-li tedy zájem o skutečně kvalitní překlady,ozvěte se prosím na moji e-mailovou adresu
A. Svítilová
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.