aboutsummaryrefslogtreecommitdiff
path: root/lib/Minz/ModelArray.php
diff options
context:
space:
mode:
authorGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-01 04:39:39 +0100
committerGravatar Alexandre Alapetite <alexandre@alapetite.fr> 2014-01-01 04:39:39 +0100
commit66229a5d71b85c0a57d63fa8b1cc6e5729cabfe4 (patch)
tree9fb232b0ccc70aaa2861e920e78c9ac13164528c /lib/Minz/ModelArray.php
parent132e1883e4682ae8f873bbeb420f81f51a4e274f (diff)
Minz : bug avec OPcache de PHP 5.5+
Minz ne prenait pas en charge OPcache (cache PHP) http://php.net/opcache activé par défaut depuis PHP5.5. Ce fut un peu dur d'isoler ce bug :-/ Il faut penser à appeler opcache_invalidate avant de ré-utiliser un fichier par include(). Aussi, le mécanisme de lock() n'est plus approprié ni nécessaire. Pour FreshRSS, évite l'utilisation de ModelArray car il ne restait que quelques lignes d'utiles, et évite un héritage + appel de classe, ce qui est toujours ça de gagné.
Diffstat (limited to 'lib/Minz/ModelArray.php')
-rw-r--r--lib/Minz/ModelArray.php5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/Minz/ModelArray.php b/lib/Minz/ModelArray.php
index e3ec77dc9..ff23dbc83 100644
--- a/lib/Minz/ModelArray.php
+++ b/lib/Minz/ModelArray.php
@@ -45,9 +45,12 @@ class Minz_ModelArray {
* Sauve le tableau $array dans le fichier $filename
**/
protected function writeArray($array) {
- if (!file_put_contents($this->filename, "<?php\n return " . var_export($array, true) . ';', LOCK_EX)) {
+ if (file_put_contents($this->filename, "<?php\n return " . var_export($array, true) . ';', LOCK_EX) === false) {
throw new Minz_PermissionDeniedException($this->filename);
}
+ if (function_exists('opcache_invalidate')) {
+ opcache_invalidate($this->filename); //Clear PHP 5.5+ cache for include
+ }
return true;
}