Как я имею переменную используя услугу MySQL?

На сервере php текущий я могу выбирать следующий унифицированный указатель ресурса:
http://192.168.1.157:8080
Потом я способствую тому, чтобы, когда эта ищет унифицированный указатель ресурса, браузер загрузил следующий файл php:
index.php

<script>
a=0
</script>

Но когда я это делаю, переменная 'в' пребывает отличной во всех клиентах, которые загружают тот же веб сайт (http://192.168.1.157:8080).

Я хочу достичь то, что переменная 'в' sea всегда та же самая во всех клиентах, которые загружают тот же веб сайт (http://192.168.1.157:8080).

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

-2
задан 06.01.2017, 17:39
0 ответов

он предпочел бы способ, в котором переменная a однажды написанная в javascript, было возможно иметь и эта смогла изменять Вашу стоимость без необходимости перезагружать снова страницу

Ésto не имеет общее с языком сценариев JavaScript, если то, что ты хочешь, состоит в том, чтобы переменная имелась всеми пользователями, тогда стоимость переменной должна происходить от backend, так, когда он становится отвечающим современным требованиям там, оказывается отраженным во всех клиентах.

Так как ты ищешь немного realtime, ты можешь способствовать тому, чтобы все клиенты попросили обновленную стоимость этой переменной посредством ajax, или если ты используешь более современный stack, посредством websockets. Для вышеупомянутого ты можешь основываться в phpsocket.io.

Сервер

Заметь: Я не использовал phpsocketio, которым код, который размещается здесь, должен быть приведенным только в пример.

Согласно документации, чтобы создавать сервер, достаточно следующего кода:

use Workerman\Worker;
use PHPSocketIO\SocketIO;

$PORT = <puerto de preferencia>;
$a = 'valor inicial';

$io = new SocketIO($PORT);
$io->on('connection', function($socket)use($io){
  $socket->on('connection', function()use($io){
    $io->emit('varUpdated', $a);
  });
});

Worker::runAll();

С ésto давайте верить в сервер websocket и мы ждем из-за входящих связей. В каждой связи, мы посылаем стоимость $a в каждого клиента, который будет слушать из-за события varUpdated. Когда он изменит переменную $a будет нужно посылать Вашу новую стоимость клиентам. Как знать, когда меняется переменная $a? Итак, если эта произойдет от консультации в базу данных, тогда, ты будешь должен консультироваться периодически в поисках знания, была ли обновлена она. Ésto ты можешь делать это делая interval.

/**
 * @param {function} $fn La función en donde
 * consultas a la base de datos por el nuevo valor
 * de 'a'
 * @param {int} $msToSleep tiempo que dormirá el
 * bucle en milisegundos
 */
function setInterval ($fn, $msToSleep) {
    $seconds = (int) $msToSleep / 1000;
    while (true) {
       $fn();
       sleep($seconds);
    }
}

setInterval(function () {
   $aux = /* consultas a la bbdd */
   if ($a != $aux) {
     $a = $aux;
     $io.emit('varUpdated', $a);
   }
}, 30000); // intérvalo de 30s

Ésto ты это размещаешь внутри сервера websocket.

Клиент

Для клиента мы нуждаемся socket.io-client.

var socket = io('http://192.168.1.157:8080');
socket.on('varUpdated', function(aValue) {
  sessionStorage.setItem("a", aValue);
});

Когда получается стоимость a Эта сохраняется в sessionStorage. Хранить здесь - полезно, когда ты хочешь иметь переменную между совещаниями единственного клиента. Изменчивые будут разрушены, когда закроется сеанс (если он состоит в том, что - logueado) или вручную.

0
ответ дан 03.12.2019, 17:51
  • 1
    Ну, ¿ И có mo предполагается, что я делаю сервер websocket с твоим có я говорю? –  06.01.2017, 19:38
  • 2
    Твой вопрос уже был отвечен в моем ответе. В ней está có я говорю, чтобы создавать сервер websocket с phpsocketio. –  07.01.2017, 22:57
  • 3
    Está хорошо твой có я говорю, но ты olvidó má s важно, что состоит в том, чтобы наставлять услугу в IP, которую я поместил тебе. Если он начнется podrí чтобы подтверждать, если está я заношу в список. –  07.01.2017, 22:58
  • 4
    Я думаю, что ты не понял, я ничего не должен тестировать. có я говорю место aquí он ссылки. Это твоя обязанность тестировать альтернативы, которые дают тебе. –  07.01.2017, 23:00
  • 5
    Чувство comú n. Уже я сказал тебе, что сервер websocket - один из нескольких выборов, которые он не тратит ram в " exceso" как ты думаешь, и что не " chupa" сеть как ты говоришь. Ademá s ты просишь у меня, что я это сделал, когда это твоя обязанность. SO не сайт, где ты говоришь " hey, có mo я делаю é sto" и дайте тебе solució n точная, в этом лучшем случае serí в Yahoo Ответы. Один, как OP должен брать ответы, которые интересуют его, задавать (связные) вопросы, если есть сомнения и с полученной помощью пробовать применять ее. Он не cuestió n того, чтобы быть " arrogante". Если у тебя есть сомнения в безопасности твоего aplicació n, открывается тема для этого и ты ayudará. –  09.01.2017, 18:23

Теги

Похожие вопросы