我的网站托管在我从Hostgator租用的共享托管上。但是set_time_limit
只是30
,您不能更改限制,因为它是共享主机。他们的规则。
因此,我将csv
文件分割成8个5.500
文件中的大约csv
条记录。
我的问题是,有没有办法在单个function
内依次运行8个文件而不会超出服务器的time_limit
?
示例:
$lines = file(''.get_template_directory_uri() . '/lines1.csv', FILE_IGNORE_NEW_LINES);
foreach ($lines as $line_num => $line){
//here is some code for save you content line
}
答案 0 :(得分:1)
为了进一步说明我对设置参数和重定向的评论,这是一个准系统示例。
从本质上讲,脚本可能看起来像这样:
// require the ?file= parameter to exist
if (empty($_GET['file'])) {
echo 'No file-parameter provided.';
exit();
}
$file = $_GET['file'];
// build the full path to the file
$filename = get_template_directory_uri() . '/lines' . $file . '.csv';
// make sure the file exists, this will make sure the script stops
// when the last file has been processed
if (!file_exists($filename)) {
echo 'File ' . $file . ' does not exist. Processing may be complete.';
exit();
}
// read and process the file
$lines = file($filename, FILE_IGNORE_NEW_LINES);
foreach ($lines as $line_num => $line){
// process this line
}
// build the URL to the next file
$next_script = $_SERVER['PHP_SELF'] . '?file=' . ($file + 1);
// set a HTTP/1.1 307 Temporary Redirect header and tell the browser
// where to go
http_response_code(307);
header('Location: ' . $next_script);
exit();
现在,您可以转到http://example.com/script.php?file=1
开始导入过程。
请注意,为了使header()
函数进行重定向,您不能首先输出任何内容。 header()
设置HTTP响应标头,必须在响应正文(例如HTML,Javascript等)之前将其发送到浏览器。
如果不能保证,另一种解决方案是使用javascript重定向:
// build the URL to the next file
$next_script = $_SERVER['PHP_SELF'] . '?file=' . ($file + 1);
// redirect using javascript
echo '<script>window.location.href = "' . $next_script . '";</script>';
exit();