Php 插入批量记录时脚本过期

Php 插入批量记录时脚本过期,php,centos,Php,Centos,在将批量记录从一个表插入到另一个表时,我遇到了一个问题 所以这个过程是 我有一个csv,它有大量的记录,我使用了infle,这很好。现在,我必须在多个字段上使用某些条件将这些记录插入另一个表中 但是,在向表中插入记录时,脚本大约在30秒后过期。 下面是我已经设置的 set_time_limit(0); ini_set('max_execution_time', 0); 运行phpinfo()显示 Directive Local Value Master Value m

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

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

但是,在向表中插入记录时,脚本大约在
30秒后过期。
下面是我已经设置的

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

提前感谢您的帮助。

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

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

但是处理最大执行时间的另一种方法是,您可以使用
set\u time\u limit()
添加到默认的PHP计时器中,但不一定是在第一行。它添加到计时器中,没有像php.ini那样设置默认值,也正如php文档所说,如果php在安全模式下运行,则不能在中使用

如果您没有访问php配置的权限,最好使用
set\u time\u limit()
处理脚本。您可以为此目的制作一个时间实用程序管理器。当您认为时间不多时,在脚本的核心部分使用
set\u time\u 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的控制。因此,如果您正在处理DB,请确保DB引擎的定时

  • 其他环境设置(如Apache/IIS定时设置)通常会在一定的时间长度后限制PHP(尽管它们的默认值是300秒,这可能对您来说已经足够了)


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

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

但是处理最大执行时间的另一种方法是,您可以使用
set\u time\u limit()
添加到默认的PHP计时器中,但不一定是在第一行。它添加到计时器中,没有像php.ini那样设置默认值,也正如php文档所说,如果php在安全模式下运行,则不能在中使用

如果您没有访问php配置的权限,最好使用
set\u time\u limit()
处理脚本。您可以为此目的制作一个时间实用程序管理器。当您认为时间不多时,在脚本的核心部分使用
set\u time\u 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的控制。因此,如果您正在处理DB,请确保DB引擎的定时

  • 其他环境设置(如Apache/IIS定时设置)通常会在一定的时间长度后限制PHP(尽管它们的默认值是300秒,这可能对您来说已经足够了)


请向我们提供脚本中有关时间管理的部分。脚本在哪一行调用
设置时间限制()
?它在顶部。我刚刚研究过我必须编辑这个php.ini文件“/etc/php.ini”,但当我尝试这样做时,它说550 php.ini:权限被拒绝。请指导。请提供您的脚本中涉及时间管理的部分。脚本在哪一行调用
设置时间限制()
?它在顶部。我刚刚研究过我必须编辑这个php.ini文件“/etc/php.ini”,但当我尝试这样做时,它说550 php.ini:权限被拒绝。请导游。谢谢你这么详细的回答。php安全模式已关闭,我的脚本的执行时间约为1小时或更长:(.因为有数千条记录,每个记录都需要在插入之前进行匹配。您是否尝试过通过CLI运行脚本?它可能会在IndeDok中运行?我可以知道我在网上搜索时b/w CLI和fast CLI的区别吗?问题已经解决了。感谢您提供了如此详细的答案。php安全模式已关闭,我的脚本大约为1小时或更长:(.因为有数千条记录,每个记录都需要在插入之前进行匹配。您是否尝试通过CLI运行脚本?它可能会在中工作。我可以在网上搜索时知道b/w CLI和fast CLI的区别吗?问题已经解决。