Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Согласованная работа PHP с внешним приложением
 
 автор: O-Planet   (11.03.2007 в 19:55)   письмо автору
 
 

Здравствуйте! PHP начал заниматься недавно, но я неплохо программирую на С++, поэтому, пока сложностей больших нет. Вопрос у меня следующий, принципиальный:

Хочу я организовать сервер, который должен в реальном времени организовывать совместную работу многих посетителей сайта. (Чат, конференция, on-line игруха - что угодно). Предполагается достаточно сложная обработка действий пользователей. Пришла одна идея, но не знаю, как грамотнее ее воплотить, а может, это бред вообще? Хочу я всю обработку действий пользователей поручить не PHP-скрипту, а какой-то программе, которая просто будет запущена на сервере (не cgi). Фактически, в этой программе я буду хранить вирт. профили текущих посетителей сайта, и некий обработчик событий в цикле будет отрабатывать все, что делают они делают.

Вопрос вот в чем. Как мне лучше передавать данные от PHP-скрипта этой программе? Самый простой вариант - это с помощью файлов. Нажал пользователь N кнопку - скрипт создал файл с названием action_N.dat, а моя прога его увидела, прочитала и отработала, создав в ответ result_N.dat. Соответственно, этот файл отработал скрипт и послал ответ пользователю N. но больно не охото с файлами на HDD связываться. Есть ли более "виртуальный" способ взаимодействия скрипта с внешним приложением, типа DDE, например?

   
 
 автор: O-Planet   (11.03.2007 в 23:29)   письмо автору
 
   для: O-Planet   (11.03.2007 в 19:55)
 

И? Ни кто не в курсе?..

   
 
 автор: Саня   (11.03.2007 в 23:53)   письмо автору
 
   для: O-Planet   (11.03.2007 в 19:55)
 

Смотрите в сторону exec().

   
 
 автор: Киналь   (12.03.2007 в 00:10)   письмо автору
 
   для: O-Planet   (11.03.2007 в 19:55)
 

Лучше сначала прикиньте, а не проще ли все же ограничиться РНР. Во-первых, вы будете терять время - на обмен данными и ресурсы - на запуск программы. Во-вторых, РНР сам по себе довольно производителен, это не ActiveX и не JS=) Хотя. конечно, и не С++.
Какого рода (в общих чертах) предполагается нагрузка?

   
 
 автор: cheops   (12.03.2007 в 02:22)   письмо автору
 
   для: O-Planet   (11.03.2007 в 19:55)
 

1) Это проще организовывать в виде сервера, которому можно отправлять запросы, которые будут становиться в очередь и обрабатывать - писать свой сервер очень сложно, даже обладая экспертными знаниями в C++ и сетевых протоколах (на создание и отладку серверов уходят годы).
2) Всё это разработано уже заранее, проще всех использовать сервер базы данных MySQL - отправляете ему запрос, складируете в таблицу, обрабатываете полученные данные в любой удобный для вас момент и удаляете или архивируете обработанные записи. Очередь, удобные инструменты доступа, как из PHP, так и из C++, система авторизованного доступа, резервирования, оптимизация по скрости - всё разработано и доступно бесплатно. Т.е. запросы складируете при помощи PHP-скриптов, а обрабатывайте чем хотите - хоть PHP, хоть C++.

PS Внешние приложения, которые слабо интегрированы в Web унесут не мало ваших нервов, лучше использовать бронетанковые обкатанные не на одной тысячи проектов инструменты.

   
 
 автор: O-Planet   (12.03.2007 в 08:31)   письмо автору
 
   для: cheops   (12.03.2007 в 02:22)
 

Спасибо. Я как-то не подумал, что MySql можно и из С++ запускать... Но с другой стороны, чем это лучше свалки файлов? Один запрос = 1 автономный файл... Тема-то была акцентирована на то, чтобы не использовать hdd, как промежуточное звено. Медленнее он, чем память. А mysql - это тот же диск. Только если создать что-то вроде виртуального диска? :)

   
 
 автор: cheops   (12.03.2007 в 11:33)   письмо автору
 
   для: O-Planet   (12.03.2007 в 08:31)
 

> А mysql - это тот же диск.
Не совсем - это и разнообразные кэши в оперативной памяти, причём кэшируется не всё подряд, а лишь действительно нужные вещи (запросы, ключи). Кроме того, таблицы MySQL проектировались для очень выской скорости обновления и редактирования - обычные файлы так запросто не организуешь, особенно если в них следует писать из медленного PHP. Просто разработчики баз данных собаку съели на оптимизации скорости работы с жёстким диском - заморачиваться со всем этим ради одного приложения зачастую не стоит. MySQL, наряду с Oracle - одна из самых быстрых баз данных. Тактика "Один запрос = 1 автономный файл" скорее всего обгонит по скорости в случае C++, но гарантировать это в случае PHP уже нельзя - язык интерпретируемый.

   
 
 автор: O-Planet   (12.03.2007 в 16:04)   письмо автору
 
   для: cheops   (12.03.2007 в 11:33)
 

Ладно, надо просто попробовать...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования