2013-06-19 3 views
1

В приложении iOS я должен настроить cron для отправки уведомлений на конкретное устройство через каждые 5 минут. Я использую frapi API. Я искал на него, и обнаружил, что я должен создать хрон такую ​​запись:Как настроить работу cron в php (для приложения iPhone)

/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 job..so любая помощь будет оценена.

+0

Я думал, что вам не нужна работа cron – DevZer0

+0

нет. Мне нужна работа cron. – Ponting

+0

Я дал вам решение, которое вы уже вставили здесь, – DevZer0

ответ

2

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

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


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

crontab -l 

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

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

cd /var/www/ 
mkdir logs 
chmod 660 logs 

После того как вы подтвердили, что кронтаб работает, вы можете установить хроны, выполнив следующую команду в терминале.

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 минут.

+0

Спасибо за вашу описательную и полезную информацию. Но я хочу запустить cronjob в Mac, и я использую http://getfrapi.com/ [Frapi] в качестве сервера. Можете ли вы мне помочь? – Ponting

+1

Mac OS - это система на основе unix, поэтому команды должны работать одинаково. Рамка Frapi не имеет значения, поскольку вы просто запускаете автономный php-файл, который может быть выполнен через интерфейс командной строки php. Замените '/ var/www' на каталог, содержащий скрипт php, который вы хотите запустить. задание cron и '/ usr/bin/php' с абсолютным путем к двоичному файлу php. Если вы не знаете, где ваш двоичный файл php использует команду 'who php', чтобы узнать, где она находится. –

+0

Я понимаю все, кроме /var/www.You написал, что замените его на каталог, содержащий php-скрипт, который я хочу запустить через, я бегу через Frapi. Так что он может написать вместо/var/www. – Ponting

3

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

проверка на терминале, введя

crontab -l 

, если это дает вам нет вкладки хрон, то вам необходимо скачать его. для системы mac вы можете скачать cronix от here

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

Смежные вопросы