Как настроить работу 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 здесь
и добавьте свою команду и установите интервал времени, какой вы хотите с вашей командой.