|
|
|
| Здравствуйте! PHP начал заниматься недавно, но я неплохо программирую на С++, поэтому, пока сложностей больших нет. Вопрос у меня следующий, принципиальный:
Хочу я организовать сервер, который должен в реальном времени организовывать совместную работу многих посетителей сайта. (Чат, конференция, on-line игруха - что угодно). Предполагается достаточно сложная обработка действий пользователей. Пришла одна идея, но не знаю, как грамотнее ее воплотить, а может, это бред вообще? Хочу я всю обработку действий пользователей поручить не PHP-скрипту, а какой-то программе, которая просто будет запущена на сервере (не cgi). Фактически, в этой программе я буду хранить вирт. профили текущих посетителей сайта, и некий обработчик событий в цикле будет отрабатывать все, что делают они делают.
Вопрос вот в чем. Как мне лучше передавать данные от PHP-скрипта этой программе? Самый простой вариант - это с помощью файлов. Нажал пользователь N кнопку - скрипт создал файл с названием action_N.dat, а моя прога его увидела, прочитала и отработала, создав в ответ result_N.dat. Соответственно, этот файл отработал скрипт и послал ответ пользователю N. но больно не охото с файлами на HDD связываться. Есть ли более "виртуальный" способ взаимодействия скрипта с внешним приложением, типа DDE, например? | |
|
|
|
|
|
|
|
для: O-Planet
(11.03.2007 в 19:55)
| | И? Ни кто не в курсе?.. | |
|
|
|
|
|
|
|
для: O-Planet
(11.03.2007 в 19:55)
| | Смотрите в сторону exec(). | |
|
|
|
|
|
|
|
для: O-Planet
(11.03.2007 в 19:55)
| | Лучше сначала прикиньте, а не проще ли все же ограничиться РНР. Во-первых, вы будете терять время - на обмен данными и ресурсы - на запуск программы. Во-вторых, РНР сам по себе довольно производителен, это не ActiveX и не JS=) Хотя. конечно, и не С++.
Какого рода (в общих чертах) предполагается нагрузка? | |
|
|
|
|
|
|
|
для: O-Planet
(11.03.2007 в 19:55)
| | 1) Это проще организовывать в виде сервера, которому можно отправлять запросы, которые будут становиться в очередь и обрабатывать - писать свой сервер очень сложно, даже обладая экспертными знаниями в C++ и сетевых протоколах (на создание и отладку серверов уходят годы).
2) Всё это разработано уже заранее, проще всех использовать сервер базы данных MySQL - отправляете ему запрос, складируете в таблицу, обрабатываете полученные данные в любой удобный для вас момент и удаляете или архивируете обработанные записи. Очередь, удобные инструменты доступа, как из PHP, так и из C++, система авторизованного доступа, резервирования, оптимизация по скрости - всё разработано и доступно бесплатно. Т.е. запросы складируете при помощи PHP-скриптов, а обрабатывайте чем хотите - хоть PHP, хоть C++.
PS Внешние приложения, которые слабо интегрированы в Web унесут не мало ваших нервов, лучше использовать бронетанковые обкатанные не на одной тысячи проектов инструменты. | |
|
|
|
|
|
|
|
для: cheops
(12.03.2007 в 02:22)
| | Спасибо. Я как-то не подумал, что MySql можно и из С++ запускать... Но с другой стороны, чем это лучше свалки файлов? Один запрос = 1 автономный файл... Тема-то была акцентирована на то, чтобы не использовать hdd, как промежуточное звено. Медленнее он, чем память. А mysql - это тот же диск. Только если создать что-то вроде виртуального диска? :) | |
|
|
|
|
|
|
|
для: O-Planet
(12.03.2007 в 08:31)
| | > А mysql - это тот же диск.
Не совсем - это и разнообразные кэши в оперативной памяти, причём кэшируется не всё подряд, а лишь действительно нужные вещи (запросы, ключи). Кроме того, таблицы MySQL проектировались для очень выской скорости обновления и редактирования - обычные файлы так запросто не организуешь, особенно если в них следует писать из медленного PHP. Просто разработчики баз данных собаку съели на оптимизации скорости работы с жёстким диском - заморачиваться со всем этим ради одного приложения зачастую не стоит. MySQL, наряду с Oracle - одна из самых быстрых баз данных. Тактика "Один запрос = 1 автономный файл" скорее всего обгонит по скорости в случае C++, но гарантировать это в случае PHP уже нельзя - язык интерпретируемый. | |
|
|
|
|
|
|
|
для: cheops
(12.03.2007 в 11:33)
| | Ладно, надо просто попробовать... | |
|
|
|