<MyRusakov.ru />

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Фреймворк Yii 2.0 с нуля. Пример создания сайта

Видеокурс "Фреймворк Yii 2.0 с нуля. Пример создания сайта" обучит Вас созданию профессиональных сайтов с использованием фреймворка Yii. В курсе есть 2 раздела: теоретический и практический. В теоретическом разделе будут разобраны возможности фреймворка Yii с примерами их использования, а в практической части будет создан сайт Blog.MyRusakov.ru с помощью полученных знаний из теоретического раздела.

Так же почти ко всем урокам идут упражнения для закрепления материала из урока на практике.

После прохождения курса Вы без труда сможете создавать любые сайты с использованием фреймворка Yii, причём делать это будете быстро и качественно.

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Сокеты: Клиент на PHP

Сокеты: Клиент на PHP

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

Привожу код клиента на PHP:

<?php
  header('Content-Type: text/plain;'); //Мы будем выводить простой текст
  set_time_limit(0); //Скрипт должен работать постоянно
  ob_implicit_flush(); //Все echo должны сразу же выводиться
  $address = 'localhost'; //Адрес работы сервера
  $port = 1985; //Порт работы сервера (лучше какой-нибудь редкоиспользуемый)
  if (($socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
    //AF_INET - семейство протоколов
    //SOCK_STREAM - тип сокета
    //SOL_TCP - протокол
    echo "Ошибка создания сокета";
  }
  else {
    echo "Сокет создан\n";
  }
  $result = socket_connect($socket, $address, $port);
  if ($result === false) {
    echo "Ошибка при подключении к сокету";
  } else {
    echo "Подключение к сокету прошло успешно\n";
  }
  $out = socket_read($socket, 1024); //Читаем сообщение от сервера
  echo "Сообщение от сервера: $out.\n";
  $msg = "15";
  echo "Сообщение серверу: $msg\n";
  socket_write($socket, $msg, strlen($msg)); //Отправляем серверу сообщение
  $out = socket_read($socket, 1024); //Читаем сообщение от сервера
  echo "Сообщение от сервера: $out.\n"; //Выводим сообщение от сервера
  $msg = 'exit'; //Команда отключения
  echo "Сообщение серверу: $msg\n";
  socket_write($socket, $msg, strlen($msg));
  echo "Соединение завершено\n";
  //Останавливаем работу с сокетом
  if (isset($socket)) {
    socket_close($socket);
    echo "Сокет успешно закрыт";
  }
?>

Код хорошо прокомментирован, поэтому, думаю, что здесь всё предельно понятно. Алгоритм работы клиента тривиальный: создание сокета, подключение к серверу, отправка запросов, получение ответов, закрытие соединения. Мы с Вами отправили число 15. Если Вы читали предыдущую статью, то помните, что задача сервера это число возвести в квадрат и вернуть его. Поэтому если Вы запустите этот клиент, то увидите от сервера 225 (15*15). Потом мы подаём команду shutdown, которая останавливает сервер.

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

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (8):

Ziggor Ziggor 22.01.2012 22:19:15

Михаил,вы сами проверяли свой скрипт клиента относительно серверу? Вот нмпример строка $result = socket_connect($socket, $address, $port); как она должна подключаться если переменной $socket нет,а есть $sock. Или я ошибаюсь?=)

Ответить

Admin Admin 22.01.2012 22:27:17

Спасибо, подправил!

Ответить

blerko blerko 19.09.2012 12:55:51

Михаил,здравствуйте.Я никогда не имел дел с сокетом,с чего лучше начинать?Мне нужно чтобы скрипт вытаскивал инфу с игрового сервера и выводил в понятном мне формате.Что посоветуйте? вот пример. http://narod.ru/disk/61234356001.1422047c71b5cae33ed0f7a891da12b5/inv.php.html

Ответить

Admin Admin 19.09.2012 15:02:22

Для начала с примером в статье и разберитесь. Как именно реализовать это для игрового сервера, это уже другой вопрос.

Ответить

vladlaas vladlaas 18.05.2013 16:48:10

Добрый день! Я не совсем пойму. Ваш пример работает только кога "Сервер" и "клиент" запущен в браузере иначе выдает "Сокет создан <!--error--><br /> <b>Warning</b>: socket_connect() [<a href='function.socket-connect'>function.socket-connect</a>]: unable to connect [0]: Подключение не установлено, т.к. конечный компьютер отверг запрос на подключение. in <b>Z:\home\localhost\www\testim\test_soces\client.php</b> on line <b>16</b><br /> <script language=JavaScript src='/denwer/errors/phperror_js.php'></script>Ошибка при подключении к сокету<!--error--><br /> <b>Warning</b>: socket_read() [<a href='function.socket-read'>function.socket-read</a>]: unable to read from socket [0]: Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied. in <b>Z:\home\localhost\www\testim\test_soces\client.php</b> on line <b>22</b><br /> <script language=JavaScript src='/denwer/errors/phperror_js.php'></script>Сообщение от сервера: . Сообщение серверу: 29 <!--error--><br /> <b>Warning</b>: socket_write() [<a href='function.socket-write'>function.socket-write</a>]: unable to write to socket [0]: Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied. in <b>Z:\home\localhost\www\testim\test_soces\client.php</b> on line <b>26</b><br /> <script language=JavaScript src='/denwer/errors/phperror_js.php'></script><!--error--><br /> <b>Warning</b>: socket_read() [<a href='function.socket-read'>function.socket-read</a>]: unable to read from socket [0]: Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied. in <b>Z:\home\localhost\www\testim\test_soces\client.php</b> on line <b>27</b><br /> <script language=JavaScript src='/denwer/errors/phperror_js.php'></script>Сообщение от сервера: . Сообщение серверу: exit <!--error--><br /> <b>Warning</b>: socket_write() [<a href='function.socket-write'>function.socket-write</a>]: unable to write to socket [0]: Запрос на отправку или получение данных (when sending on a datagram socket using a sendto call) no address was supplied. in <b>Z:\home\localhost\www\testim\test_soces\client.php</b> on line <b>31</b><br /> <script language=JavaScript src='/denwer/errors/phperror_js.php'></script>Соединение завершено Сокет успешно закрыт" Вы немогли бы описать что не так или это так и должно быть! Если так и должно быть то совсем не понимаю зачем они нужны эти "Сокеты"

Ответить

Admin Admin 18.05.2013 18:14:35

Не подключается, возможно, сервер не сделали, чтобы было куда подключаться.

Ответить

vladlaas vladlaas 18.05.2013 18:24:07

Вроде все сделал правильно! Если в браузере отткрыт фаил "server.php" то все срабатывает нормально, но только один раз. Что можно сделать? Я вроде все установил как надо

Ответить

pan-ili-propal pan-ili-propal 09.11.2014 14:40:44

Михаил, Здравствуйте. Я сохранил код сервера и код клиента, затем открыл вкладку в браузере через которую запустил код сервера, а потом запустил код клиента и все работает замечательно, но почему-то всего лишь один раз, если запустить код клиента еще один раз, то лезут ошибки "socket_connect(): unable to connect [10061]: No connection could be made because the target machine actively refused it." Пробовал не закрывать соединение как на сервере так и на клиенте, код не работает, а точнее лезут опять же ошибки. Как запустить сервер так, чтобы я мог в любое время обращаться к нему? Если обращаться к серверу через HTML5 websocket нужно ли серверу отправлять заголовки о том, что он поддерживает сокеты? И в какой части кода они должны отправляться? Заранее очень благодарен за ответы!

Ответить

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.