bomber: Уважаемый ну вы наверно вкурсе что будут возникать проблемы со сканом директории где файлов более 1000 (применительно к никсам).
Нет, не в курсе, спасибо. Но думаю в этой папке не будет более 1000 файлов )
stroydomen добавил 27.08.2010 в 12:52
bomber:
if (isset($arr[$my_key+1])) echo $arr[$my_key+1]['title']; else echo $arr[0]['title'];
if (isset($arr[$my_key+2])) echo $arr[$my_key+2]['title']; else echo $arr[1]['title'];
где $my_key: id текущей статьи.
Извините, но даже так - мне не сразу понятно. Не понятно куда этот код вставлять и от куда массив с данными $arr и что такое 'title' в данном случае у вас?
Я остановился на том, что я записал данные в файл.
Теперь открываю файл
// ОТКРЫВАЕМ ФАЙЛ ДЛЯ ЧТЕНИЯ
$ff=fopen("text.cache", "r");
fclose($ff);
// и хочу сделать типа такого
for ($q=0; $q<=2; $q++) {
echo '<li>'.$files[$q].'</li>'; }
но я пока не понял, как из файла это дело загнать в массив. Или я не туда копаю?
stroydomen добавил 27.08.2010 в 12:57
В принципе в Вашем предложении почти разобрался. Пока не могу справиться с тем, чтобы данные из файла загнать в массив arr...
И посмотреть какой именно путь прописываете и подправить ошибку ?🤣
Да, сложно, не получается, видимо знаний не хватает. Всем спасибо, пришлось сделать как писал ранее через if else в зависимости от вложенности присваивается разный путь.
Opupenko: не используй точку, также в двойных кавычках "оборачивай" переменные фигурными скобками, попробуй
include (dirname(__FILE__) . "/cache/{$fname}.cache");
сам я пишу так:
include dirname(__FILE__) . '/cache/' . $fname . '.cache';
кстати, ты бы еще сами ошибки приводил сюда, чтоб мы не терялись в догадках об их природе =)))
Так а если пишете с точками переменную, зачем советуете без? :)
stroydomen добавил 26.08.2010 в 15:23
Opupenko: include (dirname(__FILE__) . "/cache/{$fname}.cache");
QUOTE]
В таком варианте ошибка
[function.include]: failed to open stream: No such file or directory in
Во втором варианте таже ошибка
Ладно, сделал через if else код видит в какой он странице и дает тот или иной путь к файлу.
Всегда пишите от корня сайта путь, проблем будет меньше.
Спасибо. Итак, совместными усидлиями получилось сохранять в кеше весь код страницы и выводить именно его если с кеширования прошло менее 60 секунд, если более - то обновлять кеш-файл и выводит его.
Скажите, пожалуйста, я правильно понимаю - я могу не весь код страницы кешировать, а только его нужную часть? верно?
Уважаемый ну вы наверно вкурсе что будут возникать проблемы со сканом директории где файлов более 1000 (применительно к никсам).
Нет, не в курсе, спасибо. Но думаю в этой папке не будет более 1000 файлов )
stroydomen добавил 27.08.2010 в 12:52
if (isset($arr[$my_key+1])) echo $arr[$my_key+1]['title']; else echo $arr[0]['title'];
if (isset($arr[$my_key+2])) echo $arr[$my_key+2]['title']; else echo $arr[1]['title'];
где $my_key: id текущей статьи.
Извините, но даже так - мне не сразу понятно. Не понятно куда этот код вставлять и от куда массив с данными $arr и что такое 'title' в данном случае у вас?
Я остановился на том, что я записал данные в файл.
Теперь открываю файл
но я пока не понял, как из файла это дело загнать в массив. Или я не туда копаю?
stroydomen добавил 27.08.2010 в 12:57
В принципе в Вашем предложении почти разобрался. Пока не могу справиться с тем, чтобы данные из файла загнать в массив arr...
А как сами статьи-то именуются в каталоге? Или есть какой-то массив?
Сейчас как раз этим занимаюсь.
Статьи в папке будут именоваться так:
1-krasnaj-glina.php
2-kafel-dla-kuhni.php
и т.д.
Сейчас сделал следующее.
Открыл директорию с файлами, просканировал, записал в массив, отсортировал массив, записал в отсортированном порядке в файл text.txt
Теперь мучаюсь как вывести
Вывод хочу сделать что-то вроде
здесь $s - это будет первый символ +1, в названии файла текущей страницы.
Ребят. Тема снова актуальна.
Сделал замену вместо
$file2 = ereg_replace ("-", " ", $file2);
сделал
str_replace ...
Это правильное решение?
Дело в том что здесь сказано только про то что функция ereg будет удалена,
http://php.su/php/?migration53
но str я так понимаю будет жить.
ТопеГ просто жесть, вы про Debug слышали ? О_о
По теме:
include (realpath(".")."/cache/".$fname.".cache');А вообще скажите, неужили сложно написать так:
И посмотреть какой именно путь прописываете и подправить ошибку ?🤣
Да, сложно, не получается, видимо знаний не хватает. Всем спасибо, пришлось сделать как писал ранее через if else в зависимости от вложенности присваивается разный путь.
У него точки разделяют переменную и строковое выражение.
Мой вариант работает?
include ("/cache/$fname.cache");Нет. Это було среди тех вариантов, о которых я написал, что не сделать мне и все варианты перепробовал.
не используй точку, также в двойных кавычках "оборачивай" переменные фигурными скобками, попробуй
include (dirname(__FILE__) . "/cache/{$fname}.cache");
сам я пишу так:
include dirname(__FILE__) . '/cache/' . $fname . '.cache';
кстати, ты бы еще сами ошибки приводил сюда, чтоб мы не терялись в догадках об их природе =)))
Так а если пишете с точками переменную, зачем советуете без? :)
stroydomen добавил 26.08.2010 в 15:23
include (dirname(__FILE__) . "/cache/{$fname}.cache");
QUOTE]
В таком варианте ошибка
Во втором варианте таже ошибка
Ладно, сделал через if else код видит в какой он странице и дает тот или иной путь к файлу.
$fp = fopen($_SERVER['DOCUMENT_ROOT'].'/cache/'.$fname.'.cache', 'w');
Спасибо, если не сложно - теперь проблема с
include ("./cache/$fname.cache");на страницах внутренних - ошибка.
Подскажите пож-та как этот путь правильно прописать?
stroydomen добавил 26.08.2010 в 14:45
плюс проверь права на запись в папку кеша =)
права 777. ок
Да, можете. Исходный html пропускаете через "парсер", вырезаете нужный код и его в кэш.
Да, спасибо, поизучаю. Наверное, все таки в моем случае правильнее сделать через запись в файл и инклуд этого файла и обновление его каждый час.
Код страницы примерно таков
статичный код
динамичный код страницы = вот его то и надо либо кешировать либо в файл загнать и вытаскивать от туда
статичный код
$filecache=$_SERVER['DOCUMENT_ROOT'].'cache/2.cache';
замените на
$filecache=$_SERVER['DOCUMENT_ROOT'].'/cache/2.cache';
Тоже самое:
readfile($_SERVER['DOCUMENT_ROOT'].'/cache/2.cache');
Всегда пишите от корня сайта путь, проблем будет меньше.
Спасибо. Итак, совместными усидлиями получилось сохранять в кеше весь код страницы и выводить именно его если с кеширования прошло менее 60 секунд, если более - то обновлять кеш-файл и выводит его.
Скажите, пожалуйста, я правильно понимаю - я могу не весь код страницы кешировать, а только его нужную часть? верно?
может надо полярность знака поменять. подумайте
Согласен. Уже все варианты перепробовал. 😒