Codeigniter增加执行时间

时间:2016-05-24 09:11:01

标签: php codeigniter

我已经增加了ini_set('max_execution_time',0)中脚本的执行时间,但似乎codeigniter忽略了它并使我的脚本在执行30秒后停止。

我还搜索了如何增加codeigniter的执行时间,他们说它在codeigniter的系统核心,但是当我检查时,没有人可以调整。必须是因为我的codeigniter的版本是最新的。

我还在我的控制器上方添加了set_time_limit(0)但没有效果,因此我把它放在函数内但结果相同。

我也尝试了{{1}}上面和脚本之前,但没有一个给出好结果....

请帮助,因为我需要处理超过3000条记录,并且需要超过10分钟......

3 个答案:

答案 0 :(得分:1)

Hello尝试此代码在system / core / CodeIgniter.php中添加此脚本

if (function_exists("set_time_limit") == TRUE AND @ini_get("safe_mode") == 0)
{
    @set_time_limit(300);
}

答案 1 :(得分:0)

你使用什么类型的PHP?例如php5-fpm?

更好的方法是分批提取记录并处理它们,

设置一个cron作业来拉动10条记录并每5分钟处理一次,或者你可以将它们推入排队系统。

除非你对你的php进程进行守护,否则它不应该运行这么长时间,如果它记录了10分钟的3000条记录,它听起来非常耗尽内存,你可能会在这个执行时间内耗尽内存,所以再批次是最好的选择。

您也不希望在生产服务器上设置10分钟的执行时间,因为它可能很容易被滥用以占用您的系统资源。

答案 2 :(得分:0)

好的,当我将sql查询从模型更改为此时,我解决了我的问题:

function get_Logs()
{
    $query = "SELECT EmpID, ValidDate, GROUP_CONCAT(ValidTime) AS LogTime FROM temp_logs GROUP BY EmpID,ValidDate";

    $result = $this->db->query($query);

    return $result->result_array();
}

Codeigniter查询格式以某种方式停止,即使有待处理的静态记录,但通过将其更改为本机sql语法结构,我的脚本可以正常工作....非常感谢发布的人对我的问题发表评论......