ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

项目中导出功能 超时的问题解决方案

2021-12-23 12:03:10  阅读:159  来源: 互联网

标签:fp 脚本 PHP 解决方案 导出 bgproc 服务器 超时


任务计划超时的问题:

1.http执行超时的问题,不接收通知,或以钉钉消息方式接收结果;

2.通过命令行 执行方式;

3.也可以通过使用ob_start()和ob_end_flush()缓冲PHP输出来避免curl过早返回状态。

页面导出超时的问题

导出功能增加,计算中……提示

计算好后,将计算好的数据存在服务器上;并存入mysql表;后续可发送到邮箱;

当同一个老师进行 同一个业务进行导出时,直接返回excel文件;

注意事项:需要区分 时间(当天有效),区分老师(权限不同);

其他方案

但我还想提及一种替代cron作业方法的方法:

您可以从Web服务器控制下的PHP脚本派生CLI PHP脚本。

如果您的脚本执行时间较长,且必须由某些网站用户操作触发

(例如,构建一个非常大的存档文件,并在文件完成后通过电子邮件发送下载链接),则此功能尤其有用。

我通常使用popen()函数从Web服务器PHP脚本派生CLI脚本。

这样可以很好地将参数传输到新脚本实例,如下所示:

$bgproc = popen('php "/my/path/my-bckgrnd-proc.php"', 'w');
if($bgproc===false){
  die('Could not open bgrnd process');
}else{
  // send params through stdin pipe to bgrnd process:
  $p1 = serialize($param1);
  $p2 = serialize($param2);
  $p3 = serialize($param3);
  fwrite($bgproc, $p1 . "n" . $p2 . "n" . $p3 . "n");
  pclose($bgproc);
}

在CLI脚本中,您将收到如下参数。。。

$fp = fopen('php://stdin', 'r');
$param1 = unserialize(fgets($fp));
$param2 = unserialize(fgets($fp));
$param3 = unserialize(fgets($fp));
fclose($fp);

并对它们执行任何需要Web服务器长时间控制的操作。这种技术在Unix和Windows环境中同样适用。


 

文章来源:刘俊涛的博客
欢迎关注公众号、留言、评论,一起学习。

__________________________________________________________________________________

若有帮助到您,欢迎点击推荐,您的支持是对我坚持最好的肯定(_)

标签:fp,脚本,PHP,解决方案,导出,bgproc,服务器,超时
来源: https://www.cnblogs.com/lovebing/p/15722822.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有