php генератор случайных чисел всегда работает на сервере - PullRequest
1 голос
/ 22 июня 2011

Немного предыстории - я хотел встроить это в .net, но мой хостинг-провайдер будет брать 75 долларов за включение .net, и я слишком туг, чтобы платить больше Так что php это так. Я не очень знаком с php, за исключением того, чтобы разбираться в WordPress (где я, вероятно, буду это реализовывать).

Мне нужен генератор случайных чисел (эта часть проста), который сидит на моем сервере и создает случайное число каждые x секунд, если на сайте есть хотя бы один посетитель. По сути, если кто-то попадает на страницу, запускается рандомизатор с одновременным посетителем, обслуживаемым одной и той же цепочкой чисел. Имеет ли это смысл? Может быть, я мог бы установить флаг, когда приходит один посетитель, который останавливает последующий опрос?

Я думаю, что я бы выполнил первую часть, подключив load (), запустив сервис и выкачивая числа, все довольно просто. Как я могу гарантировать, что одновременные посетители не опрашивают службу, а обслуживают выходные данные, созданные посетителем? Я попытался проиллюстрировать, что я имею в виду ниже:

visitor one hits site - polls service 3 5 23 50 29 11 59 84 99 17 34 55
                            visitor two hits site  11 59 84 99 17 34 55
                                              visitor three 99 17 34 55

Надеюсь, что это имеет смысл, любые идеи очень ценятся ...

РЕДАКТИРОВАТЬ: Что-то вроде этого для демона?

class TheDaemon
{
    public function run()
    {
        while (1) {
            // do stuff here
        }
    }
}

$daemon = new TheDaemon();
$daemon->run();

Ответы [ 4 ]

1 голос
/ 22 июня 2011

Вам нужно задание cron, которое запускает каждый x-сервер и записывает ваш номер в файл.

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

Код для вашего cron.php файла

$numberToWrite=10;
$numbers=array();
while($numberToWrite--) {
   $numbers[]=rand();
}
file_put_contents('yourfile',implode("\n",$numbers));

Теперь, когда cron создал файл со случайными числами, все что вам нужно сделать, это прочитать их:

 do {
      $randomNumbers = file('yourfile');
 } while (!isset($randomNumbers[20]));    //> A bit of busy-waiting, anyway not significant

Примечание. Я использую здесь do для проверки, не является ли файл пустым, и я использую isset(), потому что это в 10 раз быстрее, чем count во всем массиве.

0 голосов
/ 22 июня 2011

Вам нужно будет создать демон php

, читайте об этом здесь: http://kevin.vanzonneveld.net/techblog/article/create_daemons_in_php/

0 голосов
/ 22 июня 2011

Назовите это ленивым подходом, но если вы настроите простую таблицу базы данных с полями dt и int, вы можете просто предварительно заполнить все это.это связано с dt> = now ().

0 голосов
/ 22 июня 2011

Я думаю, что все зависит от вашего определения «одновременный».

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...