misha_bondar_2012 написав:І ще одне питання: якщо скрипт на PHP вічний.Тобто не викликається командою через деякий час, а виконується постійно, чи не буде це сильно навантажувати сервер и чи взагалі це нормально?
варіант такий (php while true) звичайно існує,
проте він малопродуктивний\малоефективний, зхильний до збоїв, зїсть вам купу памяті, впаде коли вам це буде ой як не потрібно...
"php born to die"
по темі -- як це роблять у іграх --
1) всі події "складають" у окрему табличку бд,
2) окремий скрипт їх обробляє по-черзі,
3) скрипт запускають через певні проміжки часу (в залежності від потрібності - чи кожні 5хв, чи кожну секунду)
по першому пункту - потрібно визначитися стосовно порядку подій, найменьшої неділимої частки часу --
для прикладу у браузерці "війна племен" - при відправленні армії враховуються й мілісекунди,
а у травіані - лише секунди, при цьому якщо в одну і ту ж секунду у одне і те ж поселення приходять дві чи більше різних армій -- першою прийде та армія, яка першою(раніше) вийшла по часу сервера
по другому пункту - там усе просто, дістається з бд і рахується (можна ще не у бд складати а тримати у оперативці - редіс, мемкеш etc -- то вже залежить від того що ви вирішите встановлювати на своєму сервері, на простому хостингу можна сказати - без варіантів - mysql)
по 3му пункту -- деякі розробники за умови відсутності крону і небажаючи користувати сторонніми сервісами - запускають такий скрипт при кожному чиху кожного активного користувача, що не є ефективно при наявності великої кількості активних користувачів та малому часу періодичності запуску скрипта,,
хоча за умови не самого маленького періоду (наприклад, 5хв) - можна записувати в бд час наступного запуску - timestamp now+ 5 хвилин і запускати скрипт, а далі - перевіряти чи timestamp now меньше за час який ми зберегли у бд,,
за умови маленького періоду часу - секунда -дві --- потрібно або cron, або скористатися для даної задачі іншою мовою програмування - наприклад erlang(-like) чи іншою, яка власне оптимізована для "довгої роботи", і звідки лише запускати потрібний нам php-скрипт
можливо існують ще якісь варіанти та\або алгоритми, потрібно подумати та\або придумати
як ви дивитесь на те, щоб разом попрацювати над чимось цікавим?