Question

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.

Was it helpful?

Solution 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.

OTHER TIPS

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.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top