Передача данных между серверами.

  • Автор темы Автор темы Jayne
  • Дата начала Дата начала

Jayne

Новичок
Передача данных между серверами.

Здравствуйте. Возникла необходимость организовать передачу небольшой информацию между серверами под php4. Основное требование - полная работоспособность со старыми клиентами (примерно 30% которых все еще сидят на php4). Раньше передача осуществлялась через file_get_contents() с GET параметрами, но сейчас добавились новые данные для передачи и размера get запроса перестало хватать. Пересмотрел несколько вариантов (Curl, file_get_contents с stream_context) - но это все прокатывает только под 5-ку, либо требует установку модулей на стороне клиента.
Был-бы рад за любые наводки и подсказки в разрешении моей задачи.
 
че, совсем мозга нет?

1. если не хватает длины гет-запроса, то помести текст запроса в отдельный файл

2. сокеты (сам придумай или читай про REST)

3. мемкеш

4. sql

и т.д.
 
DiMA, я смотрю у тебя мозг есть. Вот только воспитания не хватает.
P.s. У меня складывается впечатление, что данный форум служит не для общения, а лишь для того, чтоб "чисто поржать над тем, кто не знает того, чего знаю я". Неужели вопрос такой тривиальный, что на него первым делом отвечают 'У тебя мозг есть?'.
 
Да и у меня тоже мозга нет .-)

Но когда я захочу передавать файлы между серверами, я выберу любой из способов и попробую его реализовать. Если во время этого КОНКРЕТНОГО процесса у меня будут вопросы - вот тогда я прибегу на форум и спрошу - например, как в GET засунуть 5 Мб данных.
 
DiMA
позволь погундеть: GET в рфц не ограничивается никакими разумными ограничениями :-) ограничения накладывают лишь реализации :-)
 
2DiMA
Ок. Если ты считаешь, что я побежал на форум, так как мне лень думать, то вот некоторые оправдания в свою сторону:
1) Почему был рассмотрен вариант с GET? Потому-что передаются данные от 34 до ~ 300 байт. В некоторых вариантах, прокси не позволил-бы открыть такой урл. И 5-ть мегабайт тут никто не пытался передавать.
2) Чаще всего, сокеты закрыты, а file_get_contents открыты - поэтому вариант с сокетами отпал.
3) C SOAP такая-же ситуация, как и с CURL - не везде работает.
4) sql запросы отпадают, так как сервера клиентов не должны иметь доступа к нам, а мы в свою очередь к ним. Передача необходимой информации осуществляется посредством обмена короткими системными сообщениями.

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

Все, что хотелось - получить совет у более опытных людей, а в место этого получил оскорбления.
 
2FractalizeR
А разве они не ограничиваются php.ini, через post_max_size ? =)
 
2Gremboloid минимум 34 байта, максимум 829 байт. Возможно в дате еще будут + то, что добавит urlencode, если передача будет проходить с использованием заголовков или через GET
 
Jayne
Я не совсем понимаю чем вам не нравится [m]fsockopen[/m] ?
Почему им нельзя отправить пост?
Чаще всего, сокеты закрыты, а file_get_contents открыты - поэтому вариант с сокетами отпал.
Это как так получается, что для file_get_contents сокет открыт, а для fsockopen закрыт ? о_О
 
2cDLEON
Параноидальные настройки апача на некоторых площадках, через disable_functions .
 
Ну, если они параноидальные, то это какие-то странные параноики, оставлять allow_url_fopen = true, но закрывать сокеты.

-~{}~ 21.09.09 18:57:

Автор оригинала: Jayne
2FractalizeR
А разве они не ограничиваются php.ini, через post_max_size ? =)
Вообще-то да, но ведь это разные вещи, не так ли? Я не думаю, что ТС будет мегабайты слать. Он же ясно выразился, что порции пересылаемых данных невелики.
 
Автор оригинала: grigori
а что мешает POST через file_get_contents сделать?
Использование stream_context в file_get_contents работает только начиная с 5-ки.

Автор оригинала: r4sh Используйте fopen. А вообще, овчинка не стоит выделки.
Ну наверное, Вам виднее, что стоит делать в чужем проекте, а что нет =). fopen тоже использует stream_context c 5.x
 
Jayne
Ну в таком случае засовывайте данные в файл на этом же сервере, вызывайте скрипт на своём сервере гетом с минимальными параметрами, который по этому вызову будет забирать сам файл с сервера клиента8)
других вариантов я просто не вижу... Вопрос из ряда "я не могу снять штаны через голову, ширинка мешает, как мне это сделать?"
 
у наверное, Вам виднее, что стоит делать в чужем проекте, а что нет =).
Проект, который не может себе позволить поставить хотя бы php5, врядли стоит всех этих усилий. Вы уже затратили столько ценного времени, сколько стоит нормальный хостинг.

Используйте perl, используйте шелл и wget. Тут сложно что либо посоветовать. Окажется отрублен exec, system. Вообще php опасен, приложения на нем кишат уязвимостями, надо бы его отключить полностью.

Используйте явасркипт, фреймы, ajax. Опять же зависит от того как должны обмениваться, в интерфейсе, или в определенное время, например на cron.
 
2r4sh
Причем тут проект? Есть сервер, есть 1000 клиентов. Каждый клиент, должен иметь возможность делать запросы к серверу. Клиентская часть писалась еще в 2006 году и по данным причинам поддержка проекта идет по старым требованиям. Некоторым клиентам очень проблематично объяснить, почему после обновления у них перестает что-то работать, да и желания за всех клиентов писать в саппорт хостинга письма с просьбой поставить curl или php5 тоже нету.

Вобщем всем спасибо, за советы. Тему можно считать закрытой.
 
Сверху