К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

А не подскажет ли кто, что быстрее засекается на php - изменение размера файла или появление нового файла?

Гость
0 - 10.10.2012 - 23:48
Есть что-то вроде чата.
Так вот, на данном этапе решено, чтобы у каждого пользователя был один файл и один php-тред, который каждую секунду проверяет, не увеличивался ли файл (новые сообщения дописываются в конец файла).
Но появилось подозрение, что лучше было бы, если бы была папка, которую следовало бы детектить на предмет появления новых файлов (каждое новое сообщение - новый файл).

Тест того и другого займет время и вряд ли будет объективным, т.к. скрипт будет работать на разных серверах и предсказать наверняка, что оптимальнее, исходя из результатов тестов, думаю вряд ли получится.
Поэтому спрашиваю у профессионалов по php (если таковые есть): что будет быстрее срабатывать - проверка на удлинение файла или проверка на появление нового файла?



Гость
1 - 11.10.2012 - 08:10
Описанное выглядит как нечто очень велосипедообразное.
Тем не менее, если сервера на Linux, можно воспользоваться inotify: http://php.net/manual/ru/book.inotify.php
Гость
2 - 11.10.2012 - 13:32
а почему бы не узнавать дату изменения файла??
vk
3 - 11.10.2012 - 14:57
Два вопроса
1. Пользователи не через блокнот и FTP передают сообщения в "чат"? Если для передачи сообщений используется скрипт, то пусть он по окончании работы и вызывает "php-тред".
2. Может лучше хранить данные в БД? Файлы разбухнут по количеству и размеру, и в какой-то момент система начнет тупить из-за этого.
Гость
4 - 11.10.2012 - 19:40
Цитата:
Сообщение от vk Посмотреть сообщение
Если для передачи сообщений используется скрипт, то пусть он по окончании работы и вызывает "php-тред".
пользователей - два или больше. Вы что имеете в виду?



Цитата:
Сообщение от vk Посмотреть сообщение
Может лучше хранить данные в БД?
это самый быстрый способ определения новых сообщений?
vk
5 - 11.10.2012 - 20:34
Цитата:
Сообщение от Протезофф Посмотреть сообщение
пользователей - два или больше.
Если Вы различаете пользователей между собой, значит они как-то идентифицированы. Что мешает "послать" в нужное место "сигнал", сразу по принятии сообщения от конкретного пользователя, а не отслеживать факт нового сообщения с помощью опросчика файловой системы.
Цитата:
Сообщение от Протезофф Посмотреть сообщение
это самый быстрый способ определения новых сообщений?
К сожалению, не описана формализация понятия "новое сообщение" для Вашей задачи. Но для больших проектов обычно используют БД. В БД можно хранить и дату (время) сообщения и делать выборку по сообщениям, которые моложе определенного срока, равно как и пометку новое это сообщение или уже нет.
Гость
6 - 11.10.2012 - 20:51
Цитата:
Сообщение от vk Посмотреть сообщение
Что мешает "послать" в нужное место "сигнал"
Не понял.
Что значит послать сигнал?
Два чела чатятся на сайте. Что за сигнал можно послать?
Вы имеете в виду p2p?

Цитата:
Сообщение от vk Посмотреть сообщение
К сожалению, не описана формализация понятия "новое сообщение" для Вашей задачи.
"(новые сообщения дописываются в конец файла)"
Что тут непонятного? Пользователь набирает текст и отправляет его.
vk
7 - 11.10.2012 - 20:59
Ни в коем разе не пытаюсь подвергнуть сомнению выбранный Вами подход к реализации чата. Если обозначенные вопросы не подходят для Вашей модели, это нормальное течение событий.
Гость
8 - 11.10.2012 - 21:13
Упрощаю: 8)
В php висит тред, который каждую секунду проверяет новые записи в ........
Вместо ...... надо поставить то, где быстрее всего отображаются добавленные данные.
Варианты для .............:
существующий файл (проверка на изменение размера/даты), новый файл (проверка на наличие новых файлов в папке с файлами), база (проверка на наличие новых записей в таблице бд).

проверка какого из вариантов будет самая шустрая?
Гость
9 - 11.10.2012 - 21:43
база, тот же mysql
Гость
10 - 11.10.2012 - 21:44
в голову бы не пришло делать нечто подобное в файловой системе
Гость
11 - 11.10.2012 - 23:05
10-Фанат NASCAR >
часто бывал свидетелем, когда коннект с базой падает из-за слишком большого количества запросов.
С файловой системой такого не замечал.
Гость
12 - 12.10.2012 - 08:48
(8) Самый шустрый вариант я Вам уже привёл. Вы получите event от ядра практически моментально, будь то создание, изменение или удаление файла.
Не знаю, как все, а я лично теряюсь от вопросов типа «Как круче пришить к козе баян». Не в обиду автору будь сказано.
13 - 12.10.2012 - 16:39
если объем сообщений будет большой или пользователей будет много в чате, то нужно использовать базу данных.
непонятно, какая будет реализация, поэтому можно лишь гадать. К примеру при поступлении нового сообщения отмечать для нужного пользователя, что у него есть новые сообщения.
14 - 12.10.2012 - 16:40
Цитата:
Сообщение от Протезофф Посмотреть сообщение
10-Фанат NASCAR > часто бывал свидетелем, когда коннект с базой падает из-за слишком большого количества запросов. С файловой системой такого не замечал.
если будет php создавать большую нагрузку, то хостер просто отключит сайт :)
Гость
15 - 12.10.2012 - 19:57
14-Искусственный Интеллект1 >
не отключит, спокуха
Тем более речь про файловую систему, а не нагрузку базы через php.
Хотя если база будет быстрее, то согласен и через базу, лишь бы быстрее работало.

12-kowalski >
да, вещь хорошая. Но это еще надо расчехлиться, как ее устанавливать.
16 - 13.10.2012 - 19:54
15-Протезофф > Речь именно об php: если php будет создавать нагрузку большую чем предоставляет тариф, то хостинг может отключить сайт. Что еще не сталкивались с таким что ли? :)
Гость
17 - 13.10.2012 - 20:51
16-Искусственный Интеллект1 >
вы про вирт. хостинг? Нахрена он мне надо?
Нет, конечно, ложить сервак никто не хочет, но вопрос про быстроту.
База? Пусть будет база, если с ней быстрее. Вот только боюсь что упадет коннект, если будет дофига пользователей/сообщений.


К списку вопросов






Copyright ©, Все права защищены