#php #fsockopen
#php #fsockopen
Вопрос:
простой короткий вопрос, могу ли я передать ip хоста в функции fsockopen () вместо его имени? мне нужно установить соединение между 2 серверами, и прямо сейчас я должен работать на одном компьютере, я никогда раньше не использовал fsockopen, поэтому приветствуется простой пример, заранее спасибо =)
Комментарии:
1. Это возможно. Смотрите руководство для примеров: php.net/fsockopen
Ответ №1:
Я бы сказал, что вместо использования fsockopen()
для выполнения HTTP между двумя серверами, было бы проще использовать curl
тогда, потому что в нем уже есть все, что вам нужно.
Технически, если вы используете fsockopen()
для связи HTTP, вы собираетесь разработать другой HTTP-клиент. Поскольку curl является HTTP-клиентом, я не вижу необходимости изобретать велосипед ^^
Редактировать:
Так вы действительно должны использовать fsockopen()
?
ОК. Вот ссылка на HTTP-клиент для PHP Саймона Уиллисона. Возможно, он устарел и охватывает лишь очень небольшое подмножество функций HTTP-клиента, но он поставляется с исходным кодом и должен помочь вам разобраться в том, как использовать fsockopen
для выполнения HTTP-запроса.
Комментарии:
1. curl такой же, как сервлет, верно?! я думаю, что это невозможно, я должен использовать fsockopen, который, кстати, не работает! я не знаю, это Google или я, но я не могу найти, с чего начать!:(
2. @user635614: просто нажмите на
curl
ссылку в первом абзаце моего ответа. Это должно помочь вам начать. И нет, curl — это не java-сервлет, это расширение PHP.3. я сделал! но я говорил вам, что мы должны использовать fsockopen() ! 🙁 это курсовой проект!
Ответ №2:
например, для
fsockopen(gethostbyaddr("127.0.0.1"), ...
Комментарии:
1. Спасибо, значит, каждый «сервер» должен быть подключен к другому порту, чтобы иметь возможность обмениваться данными между ними?
2. что именно вы собираетесь делать с этим подключением? если они собираются общаться, я думаю, soap — это гораздо лучший подход php.net/manual/en/book.soap.php
3. я должен получать данные от клиентов, отправлять их на сервер с помощью Ajax и отправлять на другой сервер по запросу … я никогда не использовал fsockopen (), поэтому понятия не имею, с чего начать! это должно быть сделано с его помощью…
4. @user635614: какой протокол будет использоваться?
5. TCP, я ответил на твой вопрос?
Ответ №3:
использование функции fsockopen не обеспечивает безопасность. Эта функция часто отключается хостинг-провайдерами по соображениям безопасности, также хостинг-провайдеры защищают от внешних подключений к другим машинам брандмауэром.
Если вы хотите получить что-то одним сервером с другого, используя php, просто используйте CURL . Для его использования вам необходимо установленное расширение curl php.
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://yourserver.com/");
curl_setopt($ch, CURLOPT_HEADER, 0);
$r = curl_exec($ch);
curl_close($ch);
?>
Также, если вы используете Zend Framework, вы можете обратить внимание на классы Zend_Http_Adapter_Curl