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

Jayne

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

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

DiMA

php.spb.ru
Команда форума
че, совсем мозга нет?

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

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

3. мемкеш

4. sql

и т.д.
 

Jayne

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

DiMA

php.spb.ru
Команда форума
Да и у меня тоже мозга нет .-)

Но когда я захочу передавать файлы между серверами, я выберу любой из способов и попробую его реализовать. Если во время этого КОНКРЕТНОГО процесса у меня будут вопросы - вот тогда я прибегу на форум и спрошу - например, как в GET засунуть 5 Мб данных.
 

zerkms

TDD infected
Команда форума
DiMA
позволь погундеть: GET в рфц не ограничивается никакими разумными ограничениями :) ограничения накладывают лишь реализации :)
 

Jayne

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

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

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

Jayne

Новичок
2FractalizeR
А разве они не ограничиваются php.ini, через post_max_size ? =)
 

Jayne

Новичок
2Gremboloid минимум 34 байта, максимум 829 байт. Возможно в дате еще будут + то, что добавит urlencode, если передача будет проходить с использованием заголовков или через GET
 

cDLEON

Онанист РНРСlub
Jayne
Я не совсем понимаю чем вам не нравится [m]fsockopen[/m] ?
Почему им нельзя отправить пост?
Чаще всего, сокеты закрыты, а file_get_contents открыты - поэтому вариант с сокетами отпал.
Это как так получается, что для file_get_contents сокет открыт, а для fsockopen закрыт ? о_О
 

Jayne

Новичок
2cDLEON
Параноидальные настройки апача на некоторых площадках, через disable_functions .
 

FractalizeR

Новичок
Ну, если они параноидальные, то это какие-то странные параноики, оставлять allow_url_fopen = true, но закрывать сокеты.

-~{}~ 21.09.09 18:57:

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

grigori

( ͡° ͜ʖ ͡°)
Команда форума
а что мешает POST через file_get_contents сделать?
 

r4sh

Новичок
Используйте fopen. А вообще, овчинка не стоит выделки.
 

Jayne

Новичок
Автор оригинала: grigori
а что мешает POST через file_get_contents сделать?
Использование stream_context в file_get_contents работает только начиная с 5-ки.

Автор оригинала: r4sh Используйте fopen. А вообще, овчинка не стоит выделки.
Ну наверное, Вам виднее, что стоит делать в чужем проекте, а что нет =). fopen тоже использует stream_context c 5.x
 

cDLEON

Онанист РНРСlub
Jayne
Ну в таком случае засовывайте данные в файл на этом же сервере, вызывайте скрипт на своём сервере гетом с минимальными параметрами, который по этому вызову будет забирать сам файл с сервера клиента8)
других вариантов я просто не вижу... Вопрос из ряда "я не могу снять штаны через голову, ширинка мешает, как мне это сделать?"
 

r4sh

Новичок
у наверное, Вам виднее, что стоит делать в чужем проекте, а что нет =).
Проект, который не может себе позволить поставить хотя бы php5, врядли стоит всех этих усилий. Вы уже затратили столько ценного времени, сколько стоит нормальный хостинг.

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

Используйте явасркипт, фреймы, ajax. Опять же зависит от того как должны обмениваться, в интерфейсе, или в определенное время, например на cron.
 

Jayne

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

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