繁体   English   中英

刷新后保存变量 php

[英]Conserve variable after refresh php

我有一个 PHP 脚本,它读取 CSV 并将其导出到数据库。 在每次执行开始时,脚本都会使用$_POST获取客户名称。 发送 120k 行大约需要 7 分钟。 尽管如此,我的主机允许 PHP 脚本运行长达 165 秒。

然后我的想法是在 165s 之前刷新页面并在它结束的行再次开始导出。 我已成功刷新页面,但我努力保存变量以保存脚本结束的行 position 以便在刷新后使用它。 我可以使用$_POST$_SESSION ,但我的脚本可能会同时运行多次,每次运行都会导出不同的 CSV 。 我担心从可能同时运行的脚本中更改这些超级全局变量会使它们发生冲突,并在我不想时更改它们的值。 第一:上面的肯定是真的吗?

那么如果是,我如何存储脚本在刷新页面之前结束的行数。 我想创建一个文件,将信息放入其中然后阅读它。 这可能看起来像这样:

customer_name : Jon
row_ended : 10584

customer_name : Jane
row_ended : 11564

但是没有更简单有效的解决方案吗?

您可以创建一个运行 ID 并将其保存在 session 上。 前任。

session_start();
$_SESSION['run']['id'] = 1; // or some unique ID
$_SESSION['run']['user'] = 'jon';
$_SESSION['run']['lastRow']= 0;

$startTime = time() + 160; // total secs
if($starTime > time() ){
   // time of 160 passed redirect to same page.
   $_SESSION['run']['lastRow']= 100000;
   header("location: page.php");
   exit;
}

但这并不能解决问题,可能是重定向地狱

您可以尝试在运行时增加最大执行时间。

ini_set('max_execution_time',0); //will run forever

或者最好的解决方案将它作为 shell 命令运行,max_execition_time = 0 如果花费的时间太长,用户可能会离开页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM