Master-X
Регистрация
|
Вход
Форум
|
Новости
|
Статьи
Главная
»
Форум
»
Программинг, Скрипты, Софт, Сервисы
»
Тема:
Вопрос к PHP-профам. Простой скрипт статов/кликов...
Новая тема
Ответить
цитата
05/06/08 в 23:52
Joseph
Пишу небольшой скрипт статов/кликов. Будет работать на довольно большом трафе.
Собственно вопрос - текстовые файлы можно использовать для логов или только БД?
з.ы. при тестировании файл логов порой "обнулялся", но, я думаю дело в моих руках, а не пхп.
цитата
06/06/08 в 02:28
localhost
бд требуется настраивать под большой траф, с текстовыми файлами попроще, там все опирается на кеширующую подсистему и в целом опирается на степень загруженности диска (как часто идут обращения к диску).
у меня 3 скрипта кликов (пишут разную статистику с разных сайтов) работают с текстовыми файлами, вполне справляются с небольшой (по меркам адалта) нагрузкой в 42-70к хитов в сутки
цитата
06/06/08 в 07:21
Teacher-X
Joseph писал:
Пишу небольшой скрипт статов/кликов. Будет работать на довольно большом трафе.
Собственно вопрос - текстовые файлы можно использовать для логов или только БД?
з.ы. при тестировании файл логов порой "обнулялся", но, я думаю дело в моих руках, а не пхп.
я бы всё таки пихал в БД, но использовал heap-таблицы, а по крону, раз в 10-30 минут, сохранял на винт.
цитата
06/06/08 в 08:04
dDan
maybe SQLite?
цитата
06/06/08 в 08:42
xreload
Joseph писал:
Пишу небольшой скрипт статов/кликов. Будет работать на довольно большом трафе.
Собственно вопрос - текстовые файлы можно использовать для логов или только БД?
з.ы. при тестировании файл логов порой "обнулялся", но, я думаю дело в моих руках, а не пхп.
Любой вариант в принципе приемлем, самое главное руки выровняй
цитата
06/06/08 в 10:33
Gourad
Joseph писал:
Собственно вопрос - текстовые файлы можно использовать для логов или только БД?
Лучше всего использовать Мемкэш или Trivial Database, причем tdb не тот который на sourceforge лежит а тот который в комплекте самбы идет.
цитата
06/06/08 в 19:15
Zhidrons
Цитата:
при тестировании файл логов порой "обнулялся"
- возможна проблема как раз таки с настройками у хостера (обычно называют - неправильно настроенный модуль определения свободного места
цитата
07/06/08 в 01:57
DF™
Joseph, ты файл хоть флочишь при записи?
цитата
07/06/08 в 02:08
Cibtor
Joseph писал:
з.ы. при тестировании файл логов порой "обнулялся", но, я думаю дело в моих руках, а не пхп.
Вот поэтому и лучше пользоваться любой базой данных, что бы не думать про хранение данных, а сосредоточиться только на алгоритме работы счетчика.
цитата
07/06/08 в 11:27
Joseph
Спасибо всем за советы. Всем +5. ;) Буду думать насчет БД.
Кстати, если в скрипте для подсчета кликов была ошибка из-за которой он иногда подвисал, молго ли это очищать файл логов?
Конструкция была такой:
Код:
file();
//берем данные, делаем инкремент
//пишем все в файл, в защищенном режиме
$fp = fopen($s_file, "w+");
flock($fp, LOCK_EX))
fwrite($fp, $n_line);
flock($fp, LOCK_UN);
fclose($fp);
header('Location:
http://abc.com');
//здесь была ошибка со слешем на конце локэйшн, из-за которой он _иногда_, но не всегда, подвисал.
Может стоит все операции с данными производить уже после flock(), обойтись без file() в начале?
DF™ писал:
Joseph, ты файл хоть флочишь при записи?
Да, когда пишу в файл - flock($fp, LOCK_EX)
Когда открываю файл для чтения (в двух скриптах, один для подсчета хитов, а другой для кликов) - просто открываю file();.
цитата
07/06/08 в 11:51
Sha
При таком алгоритме клики могут проскальзывать.
Не забываем о параллелизме.
Я-бы рекоммендовал файл открывать эксклюзивно, пересчитывать, и закрывать.
При этом надо делать так, чтобы выдача страницы не задерживалась.
цитата
07/06/08 в 13:17
DF™
Joseph писал:
Конструкция была такой:
Код:
file();
//берем данные, делаем инкремент
//пишем все в файл, в защищенном режиме
$fp = fopen($s_file, "w+");
flock($fp, LOCK_EX))
fwrite($fp, $n_line);
flock($fp, LOCK_UN);
fclose($fp);
Это глупость!
Переделай свой код просто и забей на базы данных.
$fp = fopen($s_file, "r+");
flock($fp, LOCK_EX))
считываем данные
делаем инкремент
позицию на начала файла
fwrite($fp, $n_line);
считываем текущию позицию
обрезаем файл
fclose($fp);
цитата
07/06/08 в 16:39
bog
какие то примеры извращенные. куча лишних или непродуманных действий.
по сабжу, на серьезном трафе варианта 2:
логи (текстовый формат).
специализированный демон.
а базы данных стоит использовать только для последующего анализа и хранения данных.
причем судя по приведенным выше кускам кода - ТС действительно лучше БД использовать - так как с такой логикой написания скриптов далеко не уехать. А базы данных множество косяков алгоритма могут сгладить.
Новая тема
Ответить
Эта страница в полной версии