欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

【Drupal】运行Cron 失败的解决方法

shiping1 的头像

1、增加 PHP 内存
下面是我的办法 在 setting.php最后加上下面两行

ini_set('memory_limit', '3000M');
ini_set("max_execution_time", 0);
 

2、includes\common.inc :
function drupal_cron_run() {
// If not in 'safe mode', increase the maximum execution time:
if (!ini_get('safe_mode')) {
set_time_limit(240); '将240改为2400
}

来自 http://bluesnow.okwedo.com/datum/367      http://bluesnow.okwedo.com/taxonomy/term/123

解决drupal的cache_form表过大问题

2011-09-03 23:58

偶然发现用了一段时间的drupal网站里,的cache_form这个表好大,居然有1.3G共计8000多条的数据……
一查资料,实际上cache_form根本只是缓存,根本没用
折腾了几天,解决如下:
1、资料得知是cron没有正常运行,可以 在管理界面的reports--状态中手动运行cron,但失败了???!!!
2、再查资料得知,必须从build--modules里关闭core里的search……也许是个bug?!
3、关闭,然后从Perfermance里Clear cached data,再手动运行cron,成功!
4、看数据还是1.3G,崩溃,登陆phpmyadmin,原来表记录已经没有没有了,成了多余数据,优化,搞定,最后只有13兆数据……!!

来自  http://forum.gsean.org/apps.php?q=diary&a=detail&did=10342&uid=2

 

cron 执行失败

想请教一下.有人遇到过cron执行失败的问题吗?

小弟在今天执行cron时.竟然显示执行失败..整个傻眼= =.

我该从哪里下手去找错误...因为没显示失败的原因...只有在执行的那里显示失败...

请指点一下.感谢

kulubaba's 的头像

Re: cron 执行失败

模块太多或者网站内容节点太多都会导致cron超时失败的, 只需要暂时关闭些消耗资源严重的模块(比如search index), cron就可以运行了,

aggregator经常会有这个问题,暂时把它关闭掉,或者删除有问题的feed可能会有帮助。
------------------------------------------- 网站建设

Oscar0410's 的头像

Re: cron 执行失败

好像是消耗太多记忆体..我改了一​​下设定.可以使用了.(没有关闭模组)

jimmy's 的头像

Re: cron 执行失败

可以多跑一点,这样一次跑就不会消耗太多
你的站流量大?
-- from open mind to open source~

-- from open mind to open source~

dennys's 的头像

Re: cron 执行失败

修改includes/module.inc, 如下, 就可以在watch dog 看到是哪里挂掉的.

  foreach (module_implements($hook) as $module) { 
    $function = $module .'_'. $hook; 
    if ($hook == 'cron') watchdog('cron', "hit $module cron"); / /加上这行
    $result = call_user_func_array($function, $args); 
    if (isset($result) && is_array($result)) { 
      $return = array_merge($return, $result); 
    } 
    else if (isset( $result)) { 
      $return[] = $result; 
    } 
  }
tky's 的头像

Re: cron 执行失败

dennys: 
tky最近也遇到cron执行上面的问题,手动执行cron的时候会跑很久跑不完。所以就按照你讲得,加入一行程式码在includes/module.inc,用watchdog去找哪里有问题。
结果出来,是在执行search cron之后出现三行这样的错误码:

Invalid argument supplied for foreach() 在档案/home/public_html/drupal/modules/taxonomy/taxonomy.module 里的第1214 行。

居然是taxonomy.module出问题?真叫人难以置信。这个要怎么解?
这是1214行左右的程式码:

/** 
* Implementation of hook_nodeapi('update_index'). 
*/ 
function taxonomy_node_update_index(&$node) { 
  $output = array(); 
  foreach ($node->taxonomy as $term) { 
    $output[] = $term- >name; 
  } 
  if (count($output)) { 
    return '<strong>('. implode(', ', $output) .')</strong>'; 
  } 
}

系统总是显示说cron正常运作;但这样很难说是正常运作吧!
Drupal版本是6.13最新版的说。

tky

tky

大魔王ψ's 的头像

Re: cron 执行失败

tky您好: 
我也遇到相同问题,想请问后来你是怎么解决的呢?谢谢

人人把心中的爱发挥出来,就能凝聚善的福业,形成善的循环。(静思语录)

tky's 的头像

Re: cron 执行失败

这很久之前的事情,忘的差不多了。
不过我目前也还是有碰到cron执行时间过长的问题,正参考http://drupal.org/node/553430,改用http://drupal.org/project/supercron测试
效能问题真的很令人头疼

tky

大魔王ψ's 的头像

Re: cron 执行失败

了解~ 
我是用poormanscron去执行的~ 
那我也用supercron来测试看看~ ^_^

人人把心中的爱发挥出来,就能凝聚善的福业,形成善的循环。(静思语录)

dennys's 的头像

Re: cron 执行失败

怪怪的耶, 多出来的log 应该是长得像这样的, taxonomy 的讯息和你加的那几行应该没关系吧?

Drupal cron

tky's 的头像

Re: cron 执行失败

按理说,tky的watchdog应该要像dennys的贴图这样,不过中间从hit search cron这个项目到下一个项目之间,一定会出现三行

Invalid argument supplied for foreach() 在档案/home/public_html/drupal/modules/taxonomy/taxonomy.module 里的第1214 行。

而且cron.php会一直不停地在load,执行非常久之后才有结果。

tky也觉得很奇怪说。

而且刚才发现,不只一个站有同样的问题。
另一个也是从5.x升级到6.13的站(不同伺服器)也有这个问题。
不知为何,感觉这问题似曾相似?人老了,记不起来。

tky

tky

大魔王ψ's 的头像

Re: cron 执行失败

如果网站要跑cron.php然后呈空白页面的话… 
是因为记忆体不够的关系嘛?想询问大家一下

以下为我的系统设定… 
MySQL资料库5.0.45 
PHP 5.2.12 
PHP register globals已关闭
PHP记忆体限制512M 
Unicode程式库PHP Mbstring扩展

然后我的资料库目前为1m

我的drupal为6.16版的

谢谢

心中常存善解、包容、感思、知足、惜福(静思语录)

人人把心中的爱发挥出来,就能凝聚善的福业,形成善的循环。(静思语录)

danny's 的头像

Re: cron 执行失败

No news is good news!

如果是手动执行cron.php,之后出现空白页面是正常的,代表正常执行完成。
不然你可以检查report -> recent log entries里面的记载。

大魔王ψ's 的头像

Re: cron 执行失败

我的cron.php有提示二周又二小时未corn。点了执行结果秀空白页面… 
之前还可以的…后来主机商有将我的主机升级后…就变这样…所以想询问是不是还有什么设定上会变这样~~orz哀

心中常存善解、包容、感思、知足、惜福(静思语录)

人人把心中的爱发挥出来,就能凝聚善的福业,形成善的循环。(静思语录)

danny's 的头像

Re: cron 执行失败

如果你是点击report 里面的连结去run cron, 那就不是手动的了(ok, 也应该算半个手动)。我说的手动cron, 是直接输入yoursite.com/cron.php, 如果执行完页面空白, log里面也显示了执行时间,那就是ok。代表问题可能出在cron module, 而不是server的设定。

如果手动cron之后,log没有记载,那么可能是max_execution_time不够用。你也可以试试看supercron

MarkC's 的头像

Re: cron 执行失败

今天也遇到这个问题,后来在Drupal官网有看到这个资讯:
删除资料库中variables这个资料表中cron_semaphore这个参数,提供需要的参考http://drupal.org/node/143519#comment-244463

 

普通分类: