Запустите php скрипт на какой-то период - PullRequest
0 голосов
/ 02 июня 2018

Я делаю файтинг, и игрокам будет разрешено сражаться до "конца времени" (столбец строк в моей базе данных).Чем игрок с большим нанесенным уроном будет победителем.Поэтому каждый раз, когда заканчивается время окончания одной строки (даже если на сайте никого нет), я хочу запустить скрипт PHP, который обновит эту строку.Я где-то читал, что я должен использовать триггер MySQL, но я не знаю, как его использовать.Так кто-нибудь может мне помочь?

PHP Script будет выглядеть примерно так:

$query = "SELECT attacker, defender, attackerdmg, defenddmg FROM battle";
$results= mysqli_query($conn, $query);

while($Row = mysqli_fetch_assoc($results))
{
    $attackerdmg= $Row['attackerdmg'];
    $defenderdmg = $Row['defenderdmg'];
    $attacker = $Row['attacker'];
    $defender = $Row['defender'];
}

            if($attackerdmg>$defenderdmg)
            {
                $query = "UPDATE fight SET winner= '$attacker'";
            }else 
            {
                $query = "UPDATE fight SET winner= '$defender'";
            }
                $Results= mysqli_query($conn, $query);

1 Ответ

0 голосов
/ 02 июня 2018

Вам следует подумать об использовании cron job.Пожалуйста, посмотрите на эти пример 1 и пример 2

Это лучшее объяснение с кодом на PHP, который я нашел до сих пор:

http://code.tutsplus.com/tutorials/managing-cron-jobs-with-php--net-19428

Вкратце:

Хотя синтаксис планирования нового задания может показаться на первый взгляд пугающим, на самом деле понять его относительно просто, если разбить его.Задание cron всегда будет иметь пять столбцов, каждый из которых представляет хронологический «оператор», за которым следует полный путь и команда для выполнения:

\* * * * * home/path/to/command/the_command.sh

Каждый из хронологических столбцов имеет конкретное отношение к расписаниюзадача.Они выглядят следующим образом:

Minutes represents the minutes of a given hour, 0-59 respectively.
Hours represents the hours of a given day, 0-23 respectively.
Days represents the days of a given month, 1-31 respectively.
Months represents the months of a given year, 1-12 respectively.
Day of the Week represents the day of the week, Sunday through Saturday, numerically, as 0-6 respectively.

enter image description here

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

0 0 1 * * home/path/to/command/the_command.sh

Если бы мы хотели запланировать выполнение задачи каждую субботу на 8:30, мы бы написали это следующим образом:

30 8 * * 6 home/path/to/command/the_command.sh

Естьтакже ряд операторов, которые можно использовать для дальнейшей настройки расписания:

Commas is used to create a comma separated list of values for any of the cron columns.
Dashes is used to specify a range of values.
Asterisksis used to specify 'all' or 'every' value

Перейдите по ссылке для полной статьи, там объясняется:

  1. В каком форматеcronjob, если вы хотите ввести / отредактировать его вручную.
  2. Как использовать PHP с библиотекой SSH2 для аутентификации пользователя, какой crontab вы собираетесь редактировать.
  3. Полный класс PHP со всеминеобходимые методы для аутентификации, редактирования и удаления записей crontab.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...