За последние 24 часа нас посетили 18847 программистов и 1619 роботов. Сейчас ищут 928 программистов ...

fopen лимит

Тема в разделе "PHP для новичков", создана пользователем Колбася, 12 окт 2012.

  1. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Код (PHP):
    1.             if (filesize("data/chat.txt") > 100 * 1024) {
    2.                 //file_put_contents("chat.txt", file_get_contents("chat.txt", NULL, NULL, 3*1024), LOCK_EX);
    3.                 //@chmod("$fp", 0644);
    4.                 // удаление последней строки
    5.                 if ($user['id'] != '13328') {
    6.                     $file = file("tmpdisk/chat.txt");
    7.                     $fp = fopen("tmpdisk/chat.txt", "w");
    8.                     flock($fp, LOCK_EX);
    9.                     for ($s = 0; $s < count($file) / 1.6; $s++) {
    10.                         unset($file[$s]);
    11.                     }
    12.                     fputs($fp, implode("", $file));
    13.                     fputs($fp, "\r\n:[" . time() . "]:[{$user['login']}]:[<font color=\"" . (($user['color']) ? $user['color'] : "#000000") . "\">" . ($_GET['text']) . "</font>]:[" . $user['room'] . "]\r\n"); //работа с файлом
    14.                     flock($fp, LOCK_UN);
    15.                     fclose($fp);
    16.                 }
    17.             }  
    Как сделать так, чтобы выводило из файла chat.txt только последние 10 записей?
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Грузить весь файл лога чата - не лучшее решение. Тут есть класс для шустрой навигации по файлу
    viewtopic.php?f=2&t=20829
     
  4. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    О! буду смотреть. спс.
     
  5. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    если файл содержит немного строк - то лучше читать сразу весь!
    если это "лог" на миллион записей - то даже ваш вариант не лучшее решение. ибо будет тормозить все больше и больше.
    текущий файл чата обычно содержит последние N-записей и все. полный лог должен лежать отдельно.
     
  6. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Я переделал.
    Код (PHP):
    1.             if (filesize("tmpdisk/chat.txt") > 100 * 1024) {
    2.                 //file_put_contents("chat.txt", file_get_contents("chat.txt", NULL, NULL, 3*1024), LOCK_EX);
    3.                 //@chmod("$fp", 0644);
    4.                 // удаление последней строки
    5.                 if ($user['id'] != '13328') {
    6.                 $textchat = array_slice(file("tmpdisk/chat.txt","a"), -10); 
    7.                     $file = file("tmpdisk/chat.txt");
    8.                     $fp = fopen($textchat);
    9.                     flock($fp, LOCK_EX);
    10.                     for ($s = 0; $s < count($file) / 1.6; $s++) {
    11.                         unset($file[$s]);
    12.                     }
    13.                     fputs($fp, implode("", $file));
    14.                     fputs($fp, "\r\n:[" . time() . "]:[{$user['login']}]:[<font color=\"" . (($user['color']) ? $user['color'] : "#000000") . "\">" . ($_GET['text']) . "</font>]:[" . $user['room'] . "]\r\n"); //работа с файлом
    15.                     flock($fp, LOCK_UN);
    16.                     fclose($fp);
    17.                 }
    18.             }  
    Подскажите, где тут ошибка братцы кролики)
     
  7. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    Все сделал. Спс карасики.
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    ты зоофил? :D
     
  9. Колбася

    Колбася Активный пользователь

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0