Как настроить работу cron в php(для приложения iPhone)

В iOS-приложении мне нужно настроить cron для отправки уведомлений на определенное устройство через каждые 5 минут. Я использую API Frapi. Я искал его и обнаружил, что мне нужно создать запись cron следующим образом:

/etc/cron.d/

*/5 * * * * root cd /path_to_your_script/ && php your_script.php >> /var/some.log &2>&1

I wonder where and how can i set above commands ?Мой скрипт готов отправить уведомление, как показано ниже:

<?php

// Device token:
$deviceToken = 'xxxxxx';

$passphrase = 'xxxxx';
$badge = 1;

// Displays alert message here:
$message = 'Match Found!';


$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'local_cert',       '/Users/Documents/iOS_Application_Developement/new/APNSPHP/ApnsPHP-master/ck.pem');
stream_context_set_option($ctx, 'ssl', 'passphrase', $passphrase);

// Open a connection to the APNS server
$fp = stream_socket_client('ssl://gateway.sandbox.push.apple.com:2195', $err,$errstr, 60, STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT, $ctx);

if (!$fp)
exit("Failed to connect: $err $errstr" . PHP_EOL);

echo 'Connected to APNS' . PHP_EOL;

// Create the payload body
$body['aps'] = array(
'alert' => $message,
'badge' => $badge,
'sound' => 'default'
);


// Encode the payload as JSON
 $payload = json_encode($body);

// Build the binary notification
$msg = chr(0) . pack('n', 32) . pack('H*', $deviceToken) . pack('n', strlen($payload)) .      $payload;

// Send it to the server
$result = fwrite($fp, $msg, strlen($msg));

if (!$result)
  echo 'Message not delivered' . PHP_EOL;
else
  echo 'Message successfully delivered' . PHP_EOL;

// Close the connection to the server
fclose($fp);

?>

Мой php-скрипт готов, но я не знаю, как запускать его через каждые 5 минут. Я использую Frapi API. Кто-нибудь знает, как настроить и запустить Cronjob в Frapi API(php и iOS).

Я новичок в этой работе cron.. поэтому любая помощь будет оценена.

2 ответа

Решение

* Примечание. В этом ответе предполагается, что на вашем сервере работает Unix или Linux. Если это сервер Windows, оставьте комментарий, и я напишу версию для Windows.

* Примечание 2: Этот ответ также предполагает, что скрипт php, который вы хотите запустить, находится в /var/www, если это не так, заменить все экземпляры /var/www с папкой, содержащей ваш скрипт php.


Как упоминал Ишу, первый шаг - проверить и crontab поддерживается на вашем сервере; Для этого выполните следующую команду в терминале (через. SSH или в консоли, если у вас есть физический доступ).

crontab -l

Если эта команда возвращает какое-то сообщение о том, что не заданы задачи cron, отлично! В противном случае, Google, чтобы узнать, как установить crontab на любую ОС, на которой работает ваш сервер, и сделать это.

Если вы хотите записать вывод php-скрипта, чтобы вы могли проверить его, создайте logs папку в том же каталоге, что и скрипт php, и установите его права доступа для записи.

cd /var/www/
mkdir logs
chmod 660 logs

Убедившись, что crontab работает, вы можете установить задание cron, выполнив в терминале следующую команду.

crontab -e

Это откроет текстовый редактор, который должен быть пустым. Введите следующий код в редакторе:

*/5 * * * * cd /var/www && /usr/bin/php your_script.php &> logs/cron.log

замещать your_script.php с именем вашего PHP-скрипта. Если вы не хотите, чтобы логи заменить logs/cron.log с /dev/null,

Если ваша установка php не находится на /usr/bin/php, измените это, где бинарный файл php на вашем сервере находится.

После того, как вы все настроите так, как вам нравится, запустите любую команду "сохранить и выйти" для редактора, который использует crontab. Убедитесь, что задание было успешно установлено с помощью следующей команды.

crontab -l

Ваша задача cron теперь настроена и будет работать /var/www/your_script.php каждые 5 минут

Вам нужно проверить, есть ли у вас crontab или нет, для этого вы можете

проверить терминал, набрав

crontab -l

если у вас нет вкладки cron, вам нужно скачать ее. для системы Mac вы можете скачать Cronix здесь

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

Другие вопросы по тегам