2.0 alpha cache – chyba s flock()

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
xr
Člen | 94
+
0
-

PHP 5.3.0 / Nette 2.0alpha

Warning
flock(): 36 is not a valid stream resource

$cache = \Nette\Environment::getCache();
...
$cache->save($ckey, $this->dictionary, array( 'tags' => array( 'dictionary', $ckey ) ));

$ckey je textova premenna, slovnik je objekt.

hlasi to komponenta, ktoru som mal otestovanu pre verziu 1.0dev – tam vsetko bezi v poriadku. ked som nahral novu verziu frameworku, dostavam toto varovanie. je to bug alebo moja chyba? kazdopadne nikde som sa o tom nic nedocital.

dakujem.

xr
Člen | 94
+
0
-

dnes sa chyba neprejavuje. ???

→ medzitym prebehol restart apacha na vyvojovej masine

xr
Člen | 94
+
0
-

chyba sa opakuje z casu na cas.

dnes som bol opat nuteny vypnut cachovanie.

co s tym je ? ako to mozem ovplyvnit?

preco nikto nereaguje??

Filip Procházka
Moderator | 4668
+
0
-

Protože jsi evidentně jediný kdo s tím má problém. Evidentně se s tím nikdo nesetkal, jinak by ti někdo poradil.

David Grudl
Nette Core | 8145
+
0
-

Nediv se, poskytl jsi minimum informací. Zjisti, který flock ve kterém souboru to dělá, jaký máš filesystém atd.

xr
Člen | 94
+
0
-

mate pravdu, nejako som vo vytrzeni neuviedol dost informacii…

takze chyba je konkretne

Warning

flock(): 35 is not a valid stream resource

Caching/FileJournal.php (1130)
private function lock()
1128:        {
1129:            if ($this->handle) {
1130:                if (!flock($this->handle, LOCK_EX)) {
1131:                    throw new \InvalidStateException('Cannot acquire exclusive lock on journal.');
1132:                }
...

Caching/FileJournal.php (181)
Caching/FileStorage.php (213)
Caching/Cache.php (176)
SimpleTranslator/SimpleTranslator.php (64)

-- parametre: --
$key	"dictionary-sk" (13)
$data	xr\SimpleTranslator\Dictionary(4) ▼ {
   "lang" protected => "sk" (2)
   "data" protected => array(0)
   "pick" protected => FALSE
   "newPhrases" protected => array(0)
}
$dp	array(1) ▼ {
   "tags" => array(2) ▼ [
      0 => "dictionary" (10)
      1 => "dictionary-sk" (13)
   ]
}

57:                $cache = \Nette\Environment::getCache();
58:                $ckey = 'dictionary-' . $this->lang;
59:                if ( $this->dictionary->updated() ) {
60:                    $this->dictionary->saveNewPhrases();
61:                    $cache->clean(array( 'tags' => $ckey ));
62:                } else {
63:                    if ( is_null($cache[$ckey]) ) {
64:                        $cache->save($ckey, $this->dictionary, array( 'tags' => array( 'dictionary', $ckey ) ));
65:                    }
66:                }
67:            } elseif ( $this->dictionary->updated() )
68:                $this->dictionary->saveNewPhrases();
69:        }

tak, dufam, ze taketo info uz staci.

filesystem je NTFS, OS Win7 x64 bit, procesor intel core duo,
Nette Framework (version 2.0-dev released on 2011-02-06, https://nette.org)
apache 2.2.14 a php 5.3.0 (wamp server 2.0i).
na linuxovej masine som to este neskusal, ale mozem, ak bude treba.

inak toto $cache->save() sa vola v destruktore triedy simpleTranslator, ak to zavazi nejakym sposobom.

dik vopred… a sorry za slabe info doteraz.

Acci
Člen | 83
+
0
-

Tato chyba by měla být opravena v nejnovější dev verzi.