当我将批量记录从一个表格插入另一个表格时,我遇到了问题
所以过程是
我有一个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
提前感谢您的帮助。
答案 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秒,这对您来说足够了)。