Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.php > #3686
| From | Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) |
|---|---|
| Newsgroups | de.comp.lang.php |
| Subject | OpCache (was: Klassendefinition, wo?) |
| Date | 2016-02-15 11:00 +0000 |
| Message-ID | <1t56c1a751i4d76n3e8%sfroehli@Froehlich.Priv.at> (permalink) |
| References | (6 earlier) <1t56b9f8d8i496n3e8%sfroehli@Froehlich.Priv.at> <n9d2kk$olk$1@solani.org> <9t56ba3f26i54f2n3e8%sfroehli@Froehlich.Priv.at> <1t56bcce87i3ed0n3e8%sfroehli@Froehlich.Priv.at> <slrnnbu8pg.77k.hjp-usenet3@hrunkner.hjp.at> |
On Sat, 13 Feb 2016 13:36:00 Peter J. Holzer wrote: > > [Vorbereitend] > > > > $ mkdir a > > $ echo "<?php echo 'A'; ?>" > test.php > > $ mkdir b > > $ echo "<?php echo 'B'; ?>" > test.php > > $ ln -s a x > > > > [1. Aufruf von x/test.php] > > [Ausgabe: "A"] > > > > $ rm x && ln -s b x > > > > [2. Aufruf von x/test.php] > > [Ausgabe: "A"] > > > > [Apache-Reload] > > [Ausgabe: "B"] > > Das Beispiel ist zu stark vereinfacht, als dass es das Problem > > triggern würde, > Schade. Für das Beispiel oben würde mir nämlich eine einfache Erklärung > einfallen, warum sich das so verhält (und auch eine Lösung für das > Problem). In der Tat schade; das Problem mit Caches ist häufig, dass man Dinge nicht zuverlässig reproduzieren kann. An sich mache ich im echten Leben genau das, aber ich habe natürlich keine Ahnung, ob Art, Anzahl und Häufigkeit der Zugriffe einen Einfluss auf den Cache hat. Meine Software ist idR in mehreren Versionen vorrätig, dazu auch noch der Head vom jeweiligen Branch. In den Document Roots verweise ich per Symlink auf die gewünschte Version, die wiederum ein Symlink auf den aktuellen Patchlevel ist. Also: [vhost] | sw -> [software]/3.2 [software] | 3.2 -> 3.2.3 | 3.2.2 | 3.2.3 | 3.2.head Tritt nun in einem vhost ein Fehler auf, oder wird eine (sehr kleine) Änderung gewünscht, dann hänge ich diesen vhost von seiner Version auf den Head um, kann die Situation mit den Live-Daten analysieren und das Problem beheben. [vhost] | sw -> [software]/3.2.head [software] | 3.2 -> 3.2.3 | 3.2.2 | 3.2.3 | 3.2.head Danach wird aus dem korrigierten Head ein neuer Patchlevel erzeugt, in ein Verzeichnis ausgecheckt und der Link für die aktuelle Version umgebogen, womit alle vhosts unmittelbar vom Bugfix profitieren: [vhost] | sw -> [software]/3.2 [software] | 3.2 -> 3.2.4 | 3.2.2 | 3.2.3 | 3.2.4 | 3.2.head Das hat sich in langen Jahren als best practice für die allermeisten Bugs erwiesen - nur bei wenigen, größeren Problemen muss mehr Aufwand getrieben werden. Seit PHP7 kommen allerdings manchmal direkt nach dem Umschalten von | 3.2 -> 3.2.3 auf | 3.2 -> 3.2.4 haufenweise obskure Fehlermeldungen, die erst durch einen Reload des Webservers verschwinden. Der Zusammenhang mit dem OpCache ist mir erst durch diesen Thread bewusst geworden (ich verwende das neue Setup seit Jahreswechsel, so viele Korrekturen gab es da noch nicht, und das Problem tritt auch nicht jedes Mal auf), aber jetzt wo ich darum weiss, bin ich natürlich auf der Suche nach einer Lösung. > ><http://codinghobo.com/opcache-and-symlink-based-deployments/> > Hmm, die Erklärung scheint mir verkehrt herum oder zumindest > irreführend zu sein: [...] Das kann gut sein, ja. > Tatsächlich gibt es allerdings (inzwischen?) zumindest die > Optionen opcache.validate_timestamps und opcache.revalidate_freq. > Es gibt also offensichtlich eine Überprüfung, ob ein File noch > aktuell ist, und es erscheint mir unwahrscheinlich, dass PHP alle > gelesenen File offen hält. Offen gehalten wird definitiv nichts (das lässt sich mit lsof trivial nachprüfen), aber wie der OpCache nun tatsächlich mit versymlinkten Files umgeht, habe ich noch nicht herausgefunden. opcache.revalidate_freq habe ich nun von 2 auf 0 gesetzt; ob das wirklich weiterhilft, bezweifle ich, weil die Option ja gar kein symlink-spezifisches Verhalten hat, und die Fehlermeldungen auch nicht bloss für 2 Sekunden aufgetreten sind (damit könnte ich noch halbwegs leben). Es hat evt. damit zu tun, ob Dateien unter ihrem aufgerufenen Namen oder unter dem mit realpath() ermittelten Namen gecached werden. <http://jpauli.github.io/2014/06/30/realpath-cache.html> scheint das erst einmal zu bestätigen, erwähnt aber im unteren Teil, dass auch APC sich auf den realpath_cache verlässt, das Problem bei mir also auch schon früher hätte auftreten müssen. Servus, Stefan -- http://kontaktinser.at/ - die kostenlose Kontaktboerse fuer Oesterreich Offizieller Erstbesucher(TM) von mmeike Superb? Superber als Stefan!? Wer glaubt, der kauft! (Sloganizer)
Back to de.comp.lang.php | Previous | Next — Previous in thread | Next in thread | Find similar
Klassendefinition, wo? Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-03 21:01 +0000
Re: Klassendefinition, wo? k@rl.pflaesterer.de (Karl Pflästerer) - 2016-02-04 07:00 +0100
Re: Klassendefinition, wo? Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-07 12:44 +0000
Re: Klassendefinition, wo? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-02-09 00:13 +0100
Re: Klassendefinition, wo? Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-09 09:37 +0000
Re: Klassendefinition, wo? "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-02-09 14:05 +0100
Re: Klassendefinition, wo? Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-09 14:39 +0000
Re: Klassendefinition, wo? "Christoph M. Becker" <cmbecker69@arcor.de> - 2016-02-09 17:03 +0100
Re: Klassendefinition, wo? Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-09 19:35 +0000
Re: Klassendefinition, wo? Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-11 18:32 +0000
Re: Klassendefinition, wo? "Peter J. Holzer" <hjp-usenet3@hjp.at> - 2016-02-13 13:36 +0100
OpCache (was: Klassendefinition, wo?) Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-15 11:00 +0000
Re: Klassendefinition, wo? Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-02-09 20:02 +0100
Re: Klassendefinition, wo? Stefan+Usenet@Froehlich.Priv.at (Stefan Froehlich) - 2016-02-09 19:33 +0000
Zitierstil (was: Klassendefinition, wo?) Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2016-02-09 22:25 +0100
Re: Zitierstil (was: Klassendefinition, wo?) eulenspiegel.till@firemail.de - 2016-02-11 06:56 -0800
csiph-web