1

在 iOS 应用程序中,我必须设置 cron 以在每 5 分钟后向特定设备发送通知。我正在使用frapi API。我对其进行了搜索,发现我必须像这样创建 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。有人知道如何在 Frapi API(php 和 iOS)中设置和运行 Cronjob。

我是这个 cron 工作的新手..所以任何帮助将不胜感激。

4

2 回答 2

3

您需要检查您是否有 crontab,因此您可以

通过键入检查终端

crontab -l

如果它给你没有 cron 选项卡,那么你需要下载它。对于 mac 系统,您可以从这里下载 cronix

并添加您的命令并使用您的命令设置任何您想要的时间间隔。

于 2013-06-19T11:26:06.330 回答
2

*注意:此答案假定您的服务器运行的是 unix 或 linux,如果它是 Windows 服务器,请发表评论,我将编写一个 Windows 版本。

*注 2:此答案还假定您要运行的 php 脚本位于 中/var/www,如果不是这种情况,请将 的所有实例替换为/var/www包含您的 php 脚本的文件夹。


正如 Ishu 提到的,第一步是检查crontab您的服务器是否支持;在终端中运行以下命令(通过 SSH 或在控制台中,如果您有物理访问权限)来执行此操作。

crontab -l

如果此命令返回一些关于没有设置 cron 任务的消息,太好了!否则,谷歌四处寻找如何在您的服务器运行的任何操作系统上安装 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 分钟运行一次。

于 2013-06-29T05:47:31.613 回答