| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Для профи > "вечный" процесс |
| Автор: klyxa 28.7.2008, 16:12 |
| привет. у меня следущая ситуация.. есть сервер А(интерфейс), он получает запросы от клиентов(пользователей). далее,предположим, ему необходимо сделать выборку из базы расположенной на сервере Б.запрос передается скрипту,навешенному на базу,на сервере Б. у меня вопрос-можно ли сделать,чтобы процесс на сервере Б постоянно выполнялся? ну т.е. я пропишу set_time_limit(0);, а не обрубит ли сам сервер процесс? т.е. если грохнеца скрипт на сервере Б..то.хана..) |
| Автор: WolfON 28.7.2008, 16:31 |
| ага и для каждого нового обращения у вас будет висеть в памяти еще один бесконечный скрипт, пока не кончится память и не упадет апач |
| Автор: klyxa 28.7.2008, 16:53 | ||||
мне надо скрыть существование сервера Б и сделать безопасным передачу данных А-Б. вобще, насчет "скрыть существование" таким способом это какбы сказать пожелание заказчика..
согласен. мне кажется,что наиболее оптимальным будет установка ssl соединения с сервером Б. передача непосредственно запросов и получие ответов, без интерфейса на сервере Б..? http://dev.mysql.com/doc/refman/5.0/en/secure-connections.html ээ,что скажете?) |
| Автор: Mal Hack 28.7.2008, 16:58 |
| Есть два варианта. 1. Нормальная реализация на ПХП, без циклов и т.п. Тут либо шифровать, либо SSL. Шифровать - в данном случае достаточно, хотя надо более детально задачу смотреть. 2. Пишите демон на С++ например или Перле. Тогда проблем не будет. Будет 100%. Зависит от настроек веб-сервера. |
| Автор: skyboy 28.7.2008, 17:37 | ||
от клиента, обратившегося к А, существование Б и так незаметно. Если у тебя не редирект на сервер Б, конечно.
в любом случае интерфейса нету. в одном случае, браузер парсит полученный HTML и строит "внешний вид". в другом случае, сервер А получает от сервера Б HTML(xml?) и ничего не "строит", а строит логику на основании полученных данных. В любом случае, скрипту на сервере Б нет нужды входить в "вечный цикл". От тебя, кстати, аргументации вечному зацикливанию так и не увидел. обезопасить от чего? впрочем, если про SSL сам заговорил, то, пожалуй, в подробности вдаваться и не буду. Хотя общение между "своими" двумя серверами можно и чем попроще шифровать... |
| Автор: sTa1kEr 28.7.2008, 22:02 | ||||
Помимо таймаута PHP, есть так же http://httpd.apache.org/docs/trunk/mod/core.html#TimeOut. Однако скрипту запущенному отдельным интерпретатором не что не помешает работать сколько угодно долго.
Я правильно понял, что вы хотите скрыть сам факт наличия apache на сервере Б? Тогда проще всего просто повесить apache на другой порт, отличный от 80. |
| Автор: klyxa 29.7.2008, 00:25 | ||||||||||
да я просто отказался от этой идеи..и решил промолчать..) сорь еси чо)
ну я уже могу перехватить трафик,поэтому разумно будет шифровать)
а подскажи как именно, ssl не подарок,конечно.
да не..идея плохая. по сути..если ломается сервак А, то узнаются настройки доступа к Б и все ssl и пр. идут лесом.
хмм..ну я об этом не думал,но идейка то хороша.. |
| Автор: Mal Hack 29.7.2008, 09:50 |
Любой алгоритм шифрования доступный в PHP, но надо шифровать с ключом, который должны знать оба сервера. |
| Автор: klyxa 29.7.2008, 14:02 |
| а вот 2 ключа..известных серверу(ам)..т.е...шифрование на php. я предположу,что и дешифровка на php т.е. уже образуется интерфейс вокруг базы..) или я не знаю всех тонкостей?если так, то дайте плиз,что почитать. |
| Автор: Mal Hack 29.7.2008, 16:01 | ||
Принцип такой. То, что вы хочеше отправить на удаленный сервер - шифруете, с ключом. На удаленном сервере дешифровываете. В вашем случае - можете передавать SQL запрос таким образом, в качестве строки, а в начало вставить подстроку вида "AAA#", чтобы можно было удостовериться, что расшифровали верно. Вырезаем эту часть, а оставшуюся (SQL запрос) отправляем на выполнение. http://ru.php.net/manual/ru/book.mcrypt.php - шифрование/дешифрование http://ru.php.net/manual/ru/book.mhash.php - тоже гляньте http://ru.php.net/manual/ru/book.openssl.php - OpenSSL на крайний случай |
| Автор: klyxa 29.7.2008, 18:00 |
| спасибо ууу. юбилейный пост..) |
| Автор: Resha 22.10.2008, 17:58 | ||||
Или сделать ответ 404 для любых чуваков, у которых IP не является IP сервера A А лучше все вместе. При этом еще и авторизацию повесить. Потом шифрование (желательно по известному обоим ключу и еще и времени, когда был сделан запрос сервером А), из параметров проверки безопасности передавать только ключ и время запроса. Сервер Б смотрит, чтобы время запроса отличалось не более чем, предположим, на 1 минуту, потом сверяет какие-нибудь sha1 по ключу и времени запроса. Если время больше 1 минуты - выдает 404. Смысл передачи времени, думаю, понятен - если кто-то затырит шифрованный ключ, то через минуту он станет уже невалидным От серверов требуется синхронное время (с разницей не более чем в 10-15 секунд) и общий ключ для шифрования. Вообще, тоже не понимаю, зачем нужен именно демон. По-моему, мы говорим о RESTе или веб-сервисах |