Nevytvoříse cache pokud vypisu data

carione
Člen | 3
+
0
-

Ahoj, Stáhl jsem pres composer nette/nette. v index.php mam viz kod, jamile vypisu foreach, vyzkoci na me chyba viz nize. Přitom v temp slozce se mi nejaka cache dela (_Nette.Database.Structure, _Nette.Robot.Loader a pak jeden soubor ). Foreach vypise data normalne jen tam mam ten warning:

( ! ) Warning: fopen(../temp/_Nette.Database.799f712f502b84b8d8ce2d96b3ef3d99/_9121fb55839f33c58200deae4081dad8): failed to open stream: No such file or directory in D:\Server\www\emptyNetteNette\vendor\nette\caching\src\Caching\Storages\FileStorage.php on line 138
Call Stack
# Time Memory Function Location
1 0.0511 2800784 Nette\Database\Table\Selection->__destruct( ) …\Selection.php:0
2 0.0511 2800784 Nette\Database\Table\Selection->saveCacheState( ) …\Selection.php:103
3 0.0513 2800784 Nette\Caching\Cache->save( ) …\Selection.php:663
4 0.0513 2800896 Nette\Caching\Storages\FileStorage->write( ) …\Cache.php:191
5 0.0513 2801320 Nette\Caching\Storages\FileStorage->lock( ) …\FileStorage.php:174
6 0.0514 2801576 fopen ( ) …\FileStorage.php:138

Co dělám spatně ?

<?php

//stahnuto pres composer reguire nette/nette

require '../vendor/autoload.php';

$loader = new Nette\Loaders\RobotLoader;

// přidáme adresáře, které má RobotLoader indexovat
$loader->addDirectory('../app');
$loader->addDirectory('../libs');

// nastavíme cachování na disk do adresáře 'temp'
$loader->setTempDirectory('../temp');
$loader->register(); // spustíme RobotLoader

// $storage obsahuje implementaci Nette\Caching\IStorage, např.:
$storage = new Nette\Caching\Storages\FileStorage('../temp');
$connection = new Nette\Database\Connection('mysql:host=127.0.0.1;dbname=test', 'root', 'root');
$structure = new Nette\Database\Structure($connection, $storage);
$conventions = new Nette\Database\Conventions\DiscoveredConventions($structure);
$context = new Nette\Database\Context($connection, $structure, $conventions, $storage);

$zbozi = $context->table('zbozi');

foreach ($zbozi as $i ) {
    echo $i->id;
    echo ' - ';
    echo $i->name;
    echo '<br>';
}

Editoval carione (13. 6. 2018 21:01)

h4kuna
Backer | 740
+
0
-

V první fázi bych relativní cesty převedl na absolutní.

Nebudu vypisovat všechno, jen příklad

// přidáme adresáře, které má RobotLoader indexovat
$loader->addDirectory(__DIR__ . '/../app');
$loader->addDirectory(__DIR__ . '/libs');

Kde jsi to našel bez toho __DIR__? Někde v příkladech nebo jsi to odmazal?

Editoval h4kuna (14. 6. 2018 7:09)

carione
Člen | 3
+
0
-

Ano __DIR__ jsem smazal schvalne. S __DIR__ mam ale porad stejnou chybu.
Jak rikam, stahl jsem ji jen nette/nette a vytvoril index.php a do nej viz kod co jsem psal.
$context funguje, foreach se udela, vidim data, vsechno je ok. dobehne foreach a v prohlizeci dole mi vyzkoci ta hlaska.
Kdzy jsem se dival, tak opravdu ta slozka v temp neni.
Tak jsem to zkusil jeste tak ze, jsem si stahl jednotlive moduly co potrebuji. takze mam stazene jen:

caching
component-model
database
finder
forms
http
mail
robot-loader
security
utils

Udelal jsem index.php a donej stejny kod, vysledek stejny. Proste to nevytvori do slozky temp slozku temp/_Nette.Database.* a do ni ten soubor z cache. Jako muzu vypnout php errory ale to je takove reseni na prd. Spis me zajima proc to dela, kdyz jedu podle navodů co tu na strankach jsou.

carione
Člen | 3
+
0
-

Tak uz jsem na to prisel…
misto tohoto :

$storage = new Nette\Caching\Storages\FileStorage('../temp');

toto:

$storage = new Nette\Caching\Storages\FileStorage(__DIR__.'/../temp');

Ach jo, dva dny :-D

CZechBoY
Člen | 3608
+
0
-

Vsak to jsou ty absolutni cesty zejo…