插入批量记录

时间:2015-10-27 05:43:24

标签: php centos

当我将批量记录从一个表格插入另一个表格时,我遇到了问题

所以过程是 我有一个csv,它有我用过的大量记录,这很好。现在我必须将这些记录插入另一个具有许多字段的特定条件的表中。

但是,在表格脚本中插入记录时,30 sec约会到期。 以下是我已经设定的内容。

set_time_limit(0);
ini_set('max_execution_time', 0);

并运行phpinfo()显示

Directive           Local Value   Master Value

max_execution_time  0             60

max_file_uploads    20            20

PHP Version     5.3.3 

 CentOS 6.7 install

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您有权访问php.ini文件,请更正其权限并相应地进行编辑。

您还可以在public_html(根目录)中创建一个空的php.ini,并添加一行以获得最长的执行时间。

但另一种处理最长执行时间的方法是,您可以使用set_time_limit()添加到默认的PHP计时器,但不能在第一行中添加。它添加到计时器,它没有像php.ini那样设置默认值,正如PHP文档所说,如果php在safe_mode中运行,则不能使用。

如果您无法访问php配置,最好使用set_time_limit()来处理您的脚本。您可以为此目的创建一个时间实用程序管理器。当您认为时间不多时,请在脚本的核心使用set_time_limit()。例如:

while(true)
{
  if(get_time_of_my_script() == 25) // assuming php.ini's limit is 30 seconds
  {
    set_time_limit(20); // add 20 more seconds
  }
}

function get_time_of_my_script()
{
   // write something that calculates your execution time from the 
   //  very first line till the invocation
   // of the function
}

虽然你应该记住:

  • php的所有时序设置仅限于PHP内部。如果你执行system()调用,那么它不会受到PHP的控制,直到它返回一些东西。因此,如果您正在处理数据库,请确保数据库引擎的时间安排。

  • 其他环境设置(例如Apache / IIS计时设置)通常会在一段时间后限制PHP(尽管默认值为300秒,这对您来说足够了)。