你有:

> max_execution_time已禁用.只要需要,您的脚本将不会在该过程完成之前结束.

> memory_limit已禁用.内存中存储的数据量没有限制.

完成500条记录没有问题.这表明脚本在下一次cronjob迭代之前完成其过程.例如,如果您的cron每小时运行一次,则会在不到一小时的时间内处理500条记录.

如果您有一个将要处理大量记录的cronjob,那么请考虑向该进程添加锁定机制.仅允许脚本运行一次,并在上一个过程完成时重新启动.

在执行php脚本之前,您可以将脚本锁创建为shell脚本的一部分.或者,如果您无法访问服务器,则可以在php脚本中使用数据库锁定,如下所示.

class ProductCronJob

{

protected $lockValue;

public function run()

{

// Obtain a lock

if ($this->obtainLock()) {

// Run your script if you have valid lock

$this->syncProducts();

// Release the lock on complete

$this->releaseLock();

}

}

protected function syncProducts()

{

// your long running script

}

protected function obtainLock()

{

$time = new \DateTime;

$timestamp = $time->getTimestamp();

$this->lockValue = $timestamp . '_syncProducts';

$db = JFactory::getDbo();

$lock = [

'lock' => $this->lockValue,

'timemodified' => $timestamp

];

// lock = '0' indicate that the cronjob is not active.

// Update #__cronlock set lock = '', timemodified = '' where name = 'syncProducts' and lock = '0'

// $result = $db->updateObject('#__cronlock', $lock, 'id');

// $lock = SELECT * FROM #__cronlock where name = 'syncProducts';

if ($lock !== false && (string)$lock !== (string)$this->lockValue) {

// Currently there is an active process - can't start a new one

return false;

// You can return false as above or add extra logic as below

// Check the current lock age - how long its been running for

// $diff = $timestamp - $lock['timemodified'];

// if ($diff >= 25200) {

// // The current script is active for 7 hours.

// // You can change 25200 to any number of seconds you want.

// // Here you can send notification email to site administrator.

// // ...

// }

}

return true;

}

protected function releaseLock()

{

// Update #__cronlock set lock = '0' where name = 'syncProducts'

}

}

php长脚本,长PHP脚本运行多次相关推荐

  1. 如何将Python自动化测试脚本放在手机上运行

    Airtest 是网易开源的一个跨平台的UI自动化测试框架,适用于游戏和App.它有以下一些功能: 1.跨平台:Airtest可以在几乎所有平台上执行游戏和App的自动化. 2.一次编写,随处运行:A ...

  2. JS在浏览器上的性能分析(一)脚本的下载与运行

    JS在浏览器上的性能分析(一)脚本的下载与运行 前言 JS在浏览器上的性能,可以认为是开发者所面临的最严重的可用性问题.JS的阻塞特性使得浏览器在执行JS代码时不能同时做其他任何事情,而大多数浏览器使 ...

  3. ABP学习 解决:Update-Database : 无法将“Update-Database”项识别为 cmdlet、函数、脚本文件或可运行程序的名称的问题

    ABP学习 解决:Update-Database : 无法将"Update-Database"项识别为 cmdlet.函数.脚本文件或可运行程序的名称的问题 参考文章: (1)AB ...

  4. ubuntu:无法将“ubuntu1804.exe”项识别为cmdlet、函数、脚本文件或可运行程序的名称。【已解决】

    出现问题:无法将"ubuntu1804.exe"项识别为cmdlet.函数.脚本文件或可运行程序的名称. 解决办法: 第一步  进入此目录下查看是否有"ubuntu180 ...

  5. 解决vue: 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称...

    我是用yarn安装的vue脚手架(yarn global add @vue/cli),yarn提示安装成功后,运行了下vue --version,结果报错. vue : 无法将"vue&qu ...

  6. '无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称' 或 'vue不是内部或外部命令' 的解决方法...

    如果在使用 vue 初始化项目的时候提示: vue : 无法将"vue"项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确,然 ...

  7. tensorboard : 无法将“tensorboard”项识别为 cmdlet、函数、脚本文件或可运行 程序的名称。

    tensorboard可视化建模 tensorboard : 无法将"tensorboard"项识别为 cmdlet.函数.脚本文件或可运行 程序的名称.请检查名称的拼写,如果包括 ...

  8. vue : 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次。

    vue : 无法将"vue"项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确, 然后再试一次. 报错原因: 没有安装脚手架v ...

  9. 让SH/BAT脚本定位到运行目录的相对位置,实现其脚本可在任意运行目录下被正确执行...

    让SH/BAT脚本定位到运行目录的相对位置 实现其脚本可在任意运行目录下被正确执行 在Linux下的bash脚本 #!/bin/bash cd `dirname $0` 在Windows下的BAT脚本 ...

  10. yarn的配置 -- 无法将“yo”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。

    yo : 无法将"yo"项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次. 在这里以 yarn 安装 yeom ...

最新文章

  1. 只用一分钟,给你的宽带加速
  2. Android笔记三十三.BroadcastReceiver使用
  3. Password-less logins with OpenSSH
  4. 计算机专业杀毒,计算机病毒查杀
  5. linux查看缓存的文件,linux – 如何查看缓冲和缓存的数据
  6. GaussDB(for MySQL)如何在存储架构设计上做到高可靠、高可用
  7. html php上传图片验证判断,HTML_PHP实例:上传多个图片并校验的代码,单张的图片上传是不复杂的, - phpStudy...
  8. webapi 路由限制命名控件_解决Web API路由配置支持Area及命名空间参数
  9. matlab 预测值一样,matlab BP神经网络建造如下,预测时,预测值反归一化报错,求大神指教!!!!!...
  10. pat 1074. 宇宙无敌加法器(20)
  11. 软件项目管理 project 实验
  12. 浏览器主页被hao123劫持之解决方案
  13. 用python做时间序列预测八:Granger causality test(格兰杰因果检验)
  14. 51单片机学习随笔(1)
  15. 一些基于SWT的项目
  16. java中jsp内建对象有_JSP内置对象有哪些
  17. 均值不等式的常见使用技巧【初级、中级和高阶辅导】
  18. 软件测试实验1 — Junit 安装与 triangle problem 的测试
  19. Sailfish OS 是Meego系统的重生吗?
  20. Apache Doris 系列: 基础篇-Flink SQL写入Doris

热门文章

  1. 以智能数据架构,挖掘增长金矿
  2. python 不同集合上元素的迭代 chain()
  3. SpringBoot-服务端参数验证-JSR-303验证框架
  4. Cannot find module 'rxjs/operators/share'
  5. getDimension等区别
  6. Linux -- Samba用户认证
  7. 大学生一定记得要做的十八件事情
  8. IIS不支持apk文件下载问题
  9. 在参数上使用@Param(“paramName”)注解”解决了传多个参数的问题
  10. 把SQL Server 错误日志导出为EXCEL 并发送到指定的ftp 或者 共享盘