# Moodle设置守护进程

**URL:** <https://www.isharkfly.com/t/moodle/3909>\
**Category:** PHP\
**Created:** [September 22, 2012, 3:28am UTC](https://www.isharkfly.com/t/moodle/3909 "2012-09-22T03:28:40Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![honeymoose](https://www.isharkfly.com/user_avatar/www.isharkfly.com/honeymoose/32/20796_2.png) [@honeymoose](https://www.isharkfly.com/u/honeymoose)\
**Post date:** [September 22, 2012, 3:28am UTC](https://www.isharkfly.com/t/moodle/3909/1 "2012-09-22T03:28:40Z")

</div>

一些Moodle 的模块需要持续的检查来完成任务。例如，Moodle 需要检查讨论组以便它能够通过邮件的方式给订阅者发送拷贝。完成这些任务的脚本放置在管理员目录下，叫做cron.php。然而，它自己不会自动运行，所有你需要设置一种机制让这个脚本有规律的运行(例如：每5 分钟或10 分钟)。这提供了“触发器（heartbeat）”所以脚本能够执行每个模块预先定义的功能。这种规律的机制也被叫做守护服务。  
注意，运行守护进程的机器不一定需要是跟运行Moolde 的机器是同一台机器。例如，你有一个仅提供有限服务的主机，不支持守护进程，那么你可能选择运行守护进程在一台其他的服务器上或在你家里的计算机上。所有这些因素围绕cron.php 文件需要被规律的调用。这个脚本的负载不是很大，所以5 分钟的间隔通常是合理的，但如果你还担心负载的问题，你可以缩短时间间隔到15 分钟或者甚至是30 分钟。但最好不要让时间间隔太长，因为延迟的邮递任务会让课程活动的速度减慢。

首先，测试脚本能够直接从你的浏览器中运行:  
[http://example.com/moodle/admin/cron.php](http://example.com/moodle/admin/cron.php)  
现在，你需要设置一种途径让脚本能够自动的有规律的运行。  
在Windows 系统：  
最简单的办法是使用这个小包moodle-cron-for-windows.zip，这个包使得事情变得非常简单，通过安装一个小的Windows 服务。运行它并且忘了它!

在主机托管服务：  
你的web 控制面板一般会有一个页面，允许你来设置这个守护进程。例如，在Cpanel 系统，查找一个叫做“守护任务（Cron jobs）”的按钮。在那里，你可以输入一小段像下面列出这样的Unix 命令。在Unix 下使用命令行，从命令行环境你可以使用不同的命令行程序来调用这个页面。并不是所有的在一个给定的服务器上都适用。  
例如，你可以使用Unix 工具像‘wget’:  
wget -q -O /dev/null [http://example.com/moodle/admin/cron.php](http://example.com/moodle/admin/cron.php)  
注意，在这个范例中输出被丢弃了(输出到/dev/null).

相同的事情使用lynx 完成如下:  
lynx -dump [http://example.com/moodle/admin/cron.php](http://example.com/moodle/admin/cron.php) \> /dev/null  
作为选择，你可以使用标准版本的PHP，编译成允许从命令行运行。这样做的好处是，你的web 服务器日志不会被固定的到cron.php 的请求填满。不好的地方在于你需要具有访问命令行版本php 的权限。  
/opt/bin/php /web/moodle/admin/cron.php  
在Unix 环境下使用crontab 程序，Cpanel 完成这个任务所做的工作就是提供一个web 接口到一个叫做crontab 的Unix 工具。如果你有一个命令行环境，你可以自己设置crontab 工具通过命令行:  
crontab -e  
然后，添加一个行命令像下面这样:  
\*/5 \* \* \* \* wget -q -O /dev/null [http://example.com/moodle/admin/cron.php](http://example.com/moodle/admin/cron.php)  
通常，“crontab”命名将把你带入到’vi’ 编辑器环境。你按下“i”进入到“插入模式”，然后输入像上面给出的一行，然后，按下ESC 键退出插入模式。输入“:wq”你就可以保存和退出，或者退出不保存使用“:q! ”(输入时不要包含引号)。
