PHP fsockopen()

#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