<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
  header('Content-Type: text/plain;'); //Мы будем выводить простой текст
  set_time_limit(0); //Скрипт должен работать постоянно
  ob_implicit_flush(); //Все echo должны сразу же отправляться клиенту
  $address = 'localhost'; //Адрес работы сервера
  $port = 1985; //Порт работы сервера (лучше какой-нибудь редкоиспользуемый)
  if (($sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP)) < 0) {
    //AF_INET - семейство протоколов
    //SOCK_STREAM - тип сокета
    //SOL_TCP - протокол
    echo "Ошибка создания сокета";
  }
  else {
    echo "Сокет создан\n";
  }
  //Связываем дескриптор сокета с указанным адресом и портом
  if (($ret = socket_bind($sock, $address, $port)) < 0) {
    echo "Ошибка связи сокета с адресом и портом";
  }
  else {
    echo "Сокет успешно связан с адресом и портом\n";
  }
  //Начинаем прослушивание сокета (максимум 5 одновременных соединений)
  if (($ret = socket_listen($sock, 5)) < 0) {
    echo "Ошибка при попытке прослушивания сокета";
  }
  else {
    echo "Ждём подключение клиента\n";
  }
  do {
    //Принимаем соединение с сокетом
    if (($msgsock = socket_accept($sock)) < 0) {
      echo "Ошибка при старте соединений с сокетом";
    } else {
      echo "Сокет готов к приёму сообщений\n";
    }
    $msg = "Hello!"; //Сообщение клиенту
    echo "Сообщение от сервера: $msg";
    socket_write($msgsock, $msg, strlen($msg)); //Запись в сокет
    //Бесконечный цикл ожидания клиентов
    do {
      echo 'Сообщение от клиента: ';
      if (false === ($buf = socket_read($msgsock, 1024))) {
        echo "Ошибка при чтении сообщения от клиента";       }
      else {
        echo $buf."\n"; //Сообщение от клиента
      }
      //Если клиент передал exit, то отключаем соединение
      if ($buf == 'exit') {
        socket_close($msgsock);
        break 2;
      }
      if (!is_numeric($buf)) echo "Сообщение от сервера: передано НЕ число\n";
      else {
        $buf = $buf * $buf;
        echo "Сообщение от сервера: ($buf)\n";
      }
      socket_write($msgsock, $buf, strlen($buf));
    } while (true);
  } while (true);
  //Останавливаем работу с сокетом
  if (isset($sock)) {
    socket_close($sock);
    echo "Сокет успешно закрыт";
  }
?>

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

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

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

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

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

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

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

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

  1. Кнопка:

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

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

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

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

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

ankalitkin ankalitkin 17.01.2012 16:33:51

У меня ошибка, пишет что функции socket_create нет.

Ответить

Admin Admin 17.01.2012 19:22:53

Надо включить эту библиотеку. Для этого в php.ini расскоментируйте строчку: extension=php_sockets.dll, затем перезапустите сервер.

Ответить

Chunin Chunin 15.03.2012 15:41:55

Надо включить эту библиотеку. Для этого в php.ini расскоментируйте строчку: extension=php_sockets.dll, затем перезапустите сервер. --- Вот я всё по инструкции сделал,а оно мне: <!--error--><br /> <b>Fatal error</b>: Call to undefined function socket_create() in <b>Z:\home\localhost\www\server.php</b> on line <b>7</b><br /> <script language=JavaScript src='/denwer/errors/phperror_js.php'></script>

Ответить

Admin Admin 15.03.2012 15:44:00

Дополнительные модули к Денверу установите (скачайте их с http://denwer.ru).

Ответить

Chunin Chunin 15.03.2012 20:39:18

А что нужно именно скачать,можна ссылку ))

Ответить

Admin Admin 15.03.2012 21:19:56

Дополнительные модули нужно скачать: http://www.denwer.ru/packages/php5.html

Ответить

sofus sofus 23.08.2012 17:30:02

Ваш совет помог мне включить поддержку сокетов на денвере,спасибо!

Ответить

tr-td table tr-td table 11.06.2014 15:52:30

После установки дополнительных модулей ошибка сохранилась.

Ответить

des des 27.10.2012 17:12:11

Все отлично, но вот есть вопрос: здесь если мы получили коннект клиента, то пока он не перестанет слать что либо серверу(здесь пока не пошлет exit), другие клиенты будут как бы в очереди и не будут обрабатываться. Есть варианты одновременной обработки нескольких клиентов?

Ответить

vladlaas vladlaas 18.05.2013 23:15:44

Скажите хоть. Надо ли запускать самостоятельно "server.php" или его просто надо разместить и он сам будет непрерывно работать! Опишите пожалуйста, Может из за денвера моего не х..на не работает!?

Ответить

Admin Admin 19.05.2013 10:53:03

Надо запускать и сам он непрерывно работать не будет.

Ответить

vladlaas vladlaas 19.05.2013 21:27:13

"Главное понять следующее: сервер - это непрерывно выполняющийся скрипт" Зачем тогда вообще эти сокеты нужны? Где они используются?

Ответить

_Gven_ _Gven_ 13.08.2013 11:45:06

А как он запускается?

Ответить

Maxxx4791 Maxxx4791 24.01.2015 15:38:30

Скажите пожалуйста, а как его запускать. этот сокет сервер на Денвере?

Ответить

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