1

In iOS application, I have to set up cron for sending notification to particular device after every 5 minute.I am using frapi API. I searched on it and found that i have to create cron entry like this :

/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 ? My script is ready to send notification as below :

<?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);

?>

my php script is ready but I don't know how to run it after every 5 minutes.I am using Frapi API.Doed anyone know how to set up and run Cronjob in Frapi API(php and iOS).

I am newbie to this cron job..so any help will be appreciated.

Ponting
  • 2,248
  • 8
  • 33
  • 61

2 Answers2

3

You need to check whether you have crontab or not so for this you can

check on terminal by typing

crontab -l

if it gives you have no cron tab then you need to download it. for mac system you can download cronix from here

and add your command and set time interval whatever you want with your command.

Ishu
  • 12,797
  • 5
  • 35
  • 51
2

*Note: This answer assumes your server is running either unix or linux, if it is a Windows server please leave a comment and I will write up a Windows version.

*Note 2: This answer also assumes that the php script you want to run is located in /var/www, if this is not the case replace all instances of /var/www with the folder containing your php script.


As Ishu mentioned, the first step is to check and see if crontab is supported on your server; run the following command in the terminal (via. SSH or in the console if you have physical access) to do so.

crontab -l

If this command returns some message about there being no cron tasks set, great! Otherwise, Google around to find out how to install crontab on whatever OS your server is running and do so.

If you would like to log the output of the php script so that you can check it, create a logs folder in the same directory as the php script and set its permissions so that it is writeable.

cd /var/www/
mkdir logs
chmod 660 logs

Once you have confirmed that crontab is working, you can set the cron job by running the following command in the terminal.

crontab -e

This will open up a text editor which should at this point be empty. Enter the following code in the editor:

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

Replace your_script.php with the name of your php script. If you do not want logging replace logs/cron.log with /dev/null.

If your php installation is not located at /usr/bin/php, change that to wherever the php binary on your server is located.

Once you have setup everything the way you like, run whatever the "save and exit" command is for the editor crontab is using. Confirm that the job was set successfully using the following command.

crontab -l

Your cron job is now setup and will run /var/www/your_script.php every 5 minutes.

Bad Wolf
  • 8,206
  • 4
  • 34
  • 44
  • Thank you for your descriptive and helpful information.But I want to run cronjob in Mac and I am using http://getfrapi.com/ [Frapi] as a server.Can you help me on this? – Ponting Jun 30 '13 at 06:24
  • 1
    Mac OS is a unix based system so the commands should still work the same. The Frapi framework shouldn't matter as you're just running a stand-alone php file which can be done through the php command line interface. Substitute `/var/www` with the directory containing the php script you want to run the via. the cron job and `/usr/bin/php` with the absolute path to the php binary. If you don't know where your php binary is use the command `which php` to find out where it is. – Bad Wolf Jun 30 '13 at 16:05
  • I understand all things except /var/www.You wrote that substitute it with directory containing the php script i want to run via,I am running through Frapi. So what can it write in place of /var/www. – Ponting Jul 02 '13 at 05:53
  • Ok,I understand that i have to write folder containing my script in place of /var/www . – Ponting Jul 02 '13 at 05:57
  • Thanks mate.It works perfect. Now i have another question that how to ensure that cron doesn't time out and is able to batch process the scripts? – Ponting Jul 02 '13 at 06:20