Nevytvoříse cache pokud vypisu data
- carione
- Člen | 3
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
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
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.