我一直遇到Magento和cron作业没有运行的问题。似乎我的托管公司不允许使用cron.sh的某些参数(ps是其中之一)因此shell脚本在运行cron作业之前失败。当我在cpanel中的cron声明完整路径时,我想知道我是否可以从cron.sh中删除某些行,例如。
#!/bin/sh
# location of the php binary
if [ ! "$1" = "" ] ; then
CRONSCRIPT=$1
else
CRONSCRIPT=cron.php
fi
MODE=""
if [ ! "$2" = "" ] ; then
MODE=" $2"
fi
PHP_BIN=`which php`
# absolute path to magento installation
INSTALLDIR=`echo $0 | sed 's/cron\.sh//g'`
# prepend the intallation path if not given an absolute path
# if [ "$INSTALLDIR" != "" -a "`expr index $CRONSCRIPT /`" != "1" ];then
# if ! ps auxwww | grep "$INSTALLDIR$CRONSCRIPT$MODE" | grep -v grep 1>/dev/null 2>/dev/null ; then
# $PHP_BIN $INSTALLDIR$CRONSCRIPT$MODE &
# fi
#else
# if ! ps auxwww | grep "$CRONSCRIPT$MODE" | grep -v grep | grep -v cron.sh 1>/dev/null 2>/dev/null ; then
$PHP_BIN $CRONSCRIPT$MODE &
# fi
#fi
有谁知道这是否有效并且有任何缺点/后果吗?
答案 0 :(得分:2)
如果没有对此功能的特别了解,它可能会尝试避免在已经运行的情况下再次运行cron脚本。也许用锁文件也可以做到这一点 - 但这是Magento的一个领域,如果没有大量的研究,我就不会这么做。
然而,这与更大的问题正交。 Magento托管比普通的PHP代码库更挑剔,这可能只是您与主机的问题的开始。我强烈建议考虑一个非常熟悉Magentos需求的主机。如果评论出大量的Magento核心代码成为常态 - 你 会遇到更多问题。