Автор Тема: PHP Realtime  (Прочетена 1999 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
PHP Realtime
« -: 04 Септември 2016, 12:44:45 »
Някой можели да обясни как работя сокетите и как се използват. Потроших се да търся, как мога да си направя PHP-то да ми се изпълнява в реално време.
Друго което искам да знам, как мога да свържа id-то от базатаданни на потребителя с сокет или нещо такова?
Хората, който разрушават света, имат вратовръзки, не татуировки.

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 120
  • -Получени: 73
  • Публикации: 995
  • Кибик
Re: PHP Realtime
« Отговор #1 -: 06 Септември 2016, 19:02:25 »
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Re: PHP Realtime
« Отговор #2 -: 06 Септември 2016, 23:16:26 »
http://socketo.me/ - това пробва ли го, не съм го ползвал, но има демо и на пръв поглед свестна документация.

Идеята зад сокетите е накратко обяснена в страницата на същия продукт, даже и с графика - http://socketo.me/docs/flow
С две думи, сокетите представляват постоянна двупосочна връзка. В обикновена ситуация имаш сървър, предоставящ услуга (сайт) и клиент (потребител), който я достъпва. Клиентът отваря сайта, сървъра му връща посочената страница, тя се показва в браузъра - край на историята. При сокетите обаче, клиентът усъществява постоянна връзка със сървъра, която не се затваря при визуализиране на съдържанието. Използват се така наречени event-и, при които се извършва дадена логика, вместо постоянно "питане" на сървъра, дали се е случило нещо интересно.
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Pitankata

  • Мно'о доблестни
  • Hero Member
  • ***
  • Благодарности
  • -Казани: 89
  • -Получени: 136
  • Публикации: 1321
  • ПАЗИТЕЛ НА ЧАТА
Re: PHP Realtime
« Отговор #3 -: 07 Септември 2016, 09:34:07 »
ако изключим направата на чат за какво друго мое да го ползваш тоа сокет, че нещо не моа са досетя самичък?
Мързелът всъщност е доста гадна работа, не можеш да спреш за да си починеш...

HanKrum

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 120
  • -Получени: 73
  • Публикации: 995
  • Кибик
Re: PHP Realtime
« Отговор #4 -: 07 Септември 2016, 09:46:32 »
ако изключим направата на чат за какво друго мое да го ползваш тоа сокет, че нещо не моа са досетя самичък?
Онлайн игра например.
"Силата на правителството се крепи на невежеството на народа, и те знаят това и винаги ще се борят против просвещението." Лев Толстой

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
Re: PHP Realtime
« Отговор #5 -: 07 Септември 2016, 15:48:09 »
Да трябва да направя сайт, който да има Покер,Белот и Билярд.
Хората, който разрушават света, имат вратовръзки, не татуировки.

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
Re: PHP Realtime
« Отговор #6 -: 07 Септември 2016, 16:02:34 »
Така, има ли някой, който може да обясни или покаже с видео как се инсталира нещо такова и как се борави.
Другото което е че ми е чудно как мога да си вържа PHP към нещо такова.
Каквото и да намеря в нета, има само кубчина от код, който не разбирам. Не мога да намеря прост пример как се инсталира такова нещо. Как работи или как се дебъгва.
« Последна редакция: 07 Септември 2016, 16:47:35 от worldservers »
Хората, който разрушават света, имат вратовръзки, не татуировки.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Re: PHP Realtime
« Отговор #7 -: 07 Септември 2016, 21:04:36 »
http://socketo.me/docs/hello-world - какво те затруднява в този пример, защото на мене ми се вижда доста елементарен (може да е само за мене така).
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
Re: PHP Realtime
« Отговор #8 -: 08 Септември 2016, 03:48:28 »
Fatal error: Namespace declaration statement has to be the very first statement or after any declare call in the script in E:\XAMPP\htdocs\ratchet\index.php on line 5 ето това не мога да разбера. Нито мога да си сложа var_dump за да видя дали ми вади client open или close. Да не говорим че да се опитам да си изкарам някакви данни всичко се чупи.
Хората, който разрушават света, имат вратовръзки, не татуировки.

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 269
  • Публикации: 2595
  • meow
Re: PHP Realtime
« Отговор #9 -: 09 Септември 2016, 20:30:11 »
Namespace declaration statement has to be the very first statement or after any declare call
Накратко - декларацията на namespace трябва да бъде най-отгоре в скрипта, преди всякакъв друг код. Или с други думи:

Код: PHP
  1. // Правилно:
  2. <?php
  3. namespace MyApp;
  4. require_once __DIR__ . '/vendor/autoload.php';
  5.  
  6. // Грешно:
  7. <?php
  8. require_once __DIR__ . '/vendor/autoload.php';
  9. namespace MyApp;
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

worldservers

  • Jr. Member
  • **
  • Благодарности
  • -Казани: 6
  • -Получени: 3
  • Публикации: 95
Re: PHP Realtime
« Отговор #10 -: 10 Септември 2016, 12:15:32 »
Добре аз искам да направя система, която отчита колко потребители са онлайн както и общият им брои. В реално време. Как мога да го направя.
Ето какво се пробвах ма май не стана.
Код: PHP
  1. <?php
  2. namespace MyApp;
  3. require __DIR__ . '/vendor/autoload.php';
  4. include 'Configuration.php';
  5. use Ratchet\MessageComponentInterface;
  6. use Ratchet\ConnectionInterface;
  7.  
  8. class Chat implements MessageComponentInterface {
  9.     protected $clients;
  10.  
  11.     public function __construct() {
  12.         $this->clients = new \SplObjectStorage;
  13.     }
  14.  
  15.     public function onOpen(ConnectionInterface $conn) {
  16.         // Store the new connection to send messages to later
  17.         $this->clients->attach($conn);
  18.  
  19.         echo "New connection! ({$conn->resourceId})\n";
  20.     }
  21.  
  22.     public function onMessage(ConnectionInterface $from, $msg) {
  23.         $numRecv = count($this->clients) - 1;
  24.         echo sprintf('Connection %d sending message "%s" to %d other connection%s' . "\n"
  25.             , $from->resourceId, $msg, $numRecv, $numRecv == 1 ? '' : 's');
  26.  
  27.         foreach ($this->clients as $client) {
  28.             if ($from !== $client) {
  29.                 // The sender is not the receiver, send to each client connected
  30.                 $client->send($msg);
  31.             }
  32.         }
  33.     }
  34.  
  35.     public function onClose(ConnectionInterface $conn) {
  36.         // The connection is closed, remove it, as we can no longer send it messages
  37.         $this->clients->detach($conn);
  38.  
  39.         echo "Connection {$conn->resourceId} has disconnected\n";
  40.     }
  41.  
  42.     public function onError(ConnectionInterface $conn, \Exception $e) {
  43.         echo "An error has occurred: {$e->getMessage()}\n";
  44.  
  45.         $conn->close();
  46.     }
  47. }

Резултата:
""
« Последна редакция: 10 Септември 2016, 12:21:33 от worldservers »
Хората, който разрушават света, имат вратовръзки, не татуировки.

kjufte

  • Sr. Member
  • ****
  • Благодарности
  • -Казани: 1
  • -Получени: 51
  • Публикации: 308
Re: PHP Realtime
« Отговор #11 -: 10 Септември 2016, 16:54:02 »
А какво точно си пробвал, защото кода ти не се различава от оригинала с изключение на един require и един include?

Първо подкарай примера както е даден. Виж как работи, разбери го и тогава се опитай да го промениш така, че да прави това, което искаш.

Zorko

  • Full Member
  • ***
  • Благодарности
  • -Казани: 33
  • -Получени: 8
  • Публикации: 206
Re: PHP Realtime
« Отговор #12 -: 10 Септември 2016, 17:12:01 »
Здравей!  :)

За real time сайтове може да разгледаш "Meteor JS" (https://www.meteor.com/)
Не е трудно за използване, а и вместо да учиш сокети и как се използват можеш да научиш Метеор.

Между другото с Метеор ще се получат много добре игри като тези които искаш да направиш / ти направят.

Ето дори има и урок как се прави приложение за игра с карти - http://code.tutsplus.com/courses/build-a-multi-player-card-game-with-meteor -> ето и сорс кода https://github.com/tutsplus/Building-scopa-in-meteor
Това не знам дали е безплатно, но със сигурност ако решиш да използваш Метеор ще намериш доста полезни и безплатни уроци. Също и документацията им е много хубава и лесно се разбира всичко.

Знам, че отговора ми не е свързан с темата и сокетите, но може да е полезно за човека.  :)

HD

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 208
  • -Получени: 165
  • Публикации: 3077
Re: PHP Realtime
« Отговор #13 -: 11 Септември 2016, 11:13:30 »
Това не бих го направил с php. Поради тази причина има неща като node.js, angular и други.Разгледай това http://socket.io/