Bla*_*use 2 apache debian apache2 objective-c push-notification
我正在尝试对我的debian vps(apace2,mysql)进行推送通知.
我使用本教程中的PHP脚本(http://www.raywenderlich.com/3525/apple-push-notification-services-tutorial-part-2).
基本上,脚本放在一个无限循环中,每隔几秒检查一次mysql表中的新记录.该教程说它应该作为后台进程运行.
// This script should be run as a background process on the server. It checks
// every few seconds for new messages in the database table push_queue and
// sends them to the Apple Push Notification Service.
//
// Usage: php push.php development &
Run Code Online (Sandbox Code Playgroud)
所以我有四个问题.
如何从终端启动脚本?我应该输入什么?服务器上的脚本位置是:
/var/www/development_folder/scripts/push2/push.php
如果需要,我怎么能杀死它(不必重新启动)?
由于推送通知是必不可少的,我需要一种方法来检查脚本是否正在运行.代码(来自教程)调用函数出错了:
function fatalError($message)
{
writeToLog('Exiting with fatal error: ' . $message);
exit;
}
Run Code Online (Sandbox Code Playgroud)也许我可以在那里放一些东西来重启脚本?但是,如果脚本正在运行,那么每隔5分钟左右检查一次cron作业或其他事情也会很好,并且如果它没有,则启动它.
4 - 我可以在apace或mysql重启后自动启动脚本吗?如果服务器崩溃或其他需要快速重启的事情发生?
非常感谢提前
小智 8
您可以使用以下命令运行脚本:
nohup php /var/www/development_folder/scripts/push2/push.php > /dev/null &
Run Code Online (Sandbox Code Playgroud)
nohup意味着当你关闭终端窗口时,命令不应该退出(它会忽略挂起信号).如果你不关心这个,你可以用"php /var/www/development_folder/scripts/push2/push.php&"来启动这个过程.PS!nohup将脚本输出记录为名为nohup.out的文件作为默认值,如果您不想这样,只需添加>/dev/null,就像我在这里所做的那样.&最后意味着进程将在后台运行.我只建议在测试代码时启动这样的推送脚本.该脚本应该在系统启动时作为守护程序运行(参见4.),如果它一直运行很重要.
只需输入
ps ax | grep push.php
Run Code Online (Sandbox Code Playgroud)
你会得到processid(pid).它看起来像这样:
4530 pts/3 S 0:00 php /var/www/development_folder/scripts/push2/push.php
Run Code Online (Sandbox Code Playgroud)
pid是你会看到的第一个数字.然后,您可以运行以下命令来终止脚本:
kill -9 4530
Run Code Online (Sandbox Code Playgroud)
如果你运行ps ax | grep push.php再次过程现在应该消失了.
我建议您制作一个cronjob来检查php脚本是否正在运行,如果没有,则启动它.您可以使用shell脚本中的ps ax和grep检查来执行此操作.这样的事情应该这样做:
if ! ps ax | grep -v grep | grep 'push.php' > /dev/null
then
nohup php /var/www/development_folder/scripts/push2/push.php > /dev/null &
else
echo "push-script is already running"
fi
Run Code Online (Sandbox Code Playgroud)如果你想在启动系统后启动脚本,你可以在/etc/init.d中创建一个文件(例如/etc.init.d/mypushscript里面有这样的内容:
php /var/www/development_folder/scripts/push2/push.php
Run Code Online (Sandbox Code Playgroud)
(你应该在这个文件中有更多)
您还需要运行以下命令:
chmod +x /etc/init.d/mypushscript
update-rc.d mypushscript defaults
Run Code Online (Sandbox Code Playgroud)
使脚本在启动时启动.我没有测试过这个,所以请在制作自己的初始化脚本之前做更多的研究!
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |