![linux cron mysqldump:php exec() vs shell 脚本 vs crontab 中的直接命令](https://linux22.com/image/602658/linux%20cron%20mysqldump%EF%BC%9Aphp%20exec()%20vs%20shell%20%E8%84%9A%E6%9C%AC%20vs%20crontab%20%E4%B8%AD%E7%9A%84%E7%9B%B4%E6%8E%A5%E5%91%BD%E4%BB%A4.png)
系统运行的是 CENTOS 5.8、Apache 2.2.3、MySQL 5.0.95、PHP 5.3.3
我们每天为一些数据库运行 mysqldump。它通过 crontab 中调用的 php 脚本运行。
它们同时运行,导致服务器负载激增。所以我将错开调用转储的时间。
我想知道是否直接在 crontab 中调用命令:
0 3 * * * /usr/bin/mysqldump -u XXX -p XXX params db_name | gzip params > /var/www/backups/database/daily/daily-db_name-`date +\%d`.tar.gz
或者通过shell脚本来设置变量。
比调用使用 exec() 的 php 脚本的负载要小:
exec( "/usr/bin/mysqldump -u XXX -p XXX params db_name | gzip params > /var/www/backups/database/daily/daily-db_name-`date +\%d`.tar.gz" );
我正在考虑进行测试,但想检查这是否是“无需动脑筋的事情”。
结果
进行了一些测试,不同方法的负载没有明显差异。我猜对于涉及很多流程的不同类型的操作来说,这可能会有所不同。
正在使用的 php 文件在我们的 svn 存储库中进行跟踪,因此最好采用这种方法。
答案1
第一个例子的负载较小 - 它需要生成/启动的进程较少。实际上,负载可能不是明显的较小,但从绝对意义上讲,负载较小。