php实现每天凌晨1点处理订单的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php实现每天凌晨1点处理订单的问题相关的知识,希望对你有一定的参考价值。
最近在做商城这块,需要自动定时处理3天内未付款的订单以及7天后自动的收货等操作,服务器是window的,用php实现会一直运行 占内存,也不好终止,不知各位有没有什么好点的办法,php不支持多线程,linux和window下任务计划知道, php实现定时就这么麻烦吗
参考技术A 你可以用php的定时任务,格式如下:function autoexec()
ignore_user_abort(true);
set_time_limit(0);
$inc = 900;
do
// 写你的代码
sleep($inc);
while (true);
追问
php貌似是只有这种方法,但一些服务器上不支持ignore_user_abort ,而且一直运行着,对性能不好,消耗内存 php语言还是太弱了点啊
追答你可以写成原生态的php,用php.exe去调用他,设置成系统的定时任务,也可以啊;
参考技术B 基本上只能用计划任务操作,或者你用别的语言处理订单,反正也就是数据修改追问如果只是改状态,那就简单了,问题是结单时还涉及利润计算的问题,我们的网站等于是一个商城 加分销系统,又不想用Php的定时,占内存 又一直运行,看样子只能用别的语言或计划任务了
追答如果计算量比较大,可以用c/c++/python来处理,定时启动计算。
追问恩,3Q,不行哦,整个网站大都是php开发的,其他语言写不太方便,因为是window下 所以只能用计划任务了
本回答被提问者采纳java Timer 定时每天凌晨0点执行任务
import java.util.TimerTask; /** * 执行内容 * @author admin_Hzw * */ public class Task extends TimerTask { public void run() { System.out.println("我有一头小毛驴!"); }
import java.util.Calendar; import java.util.Date; import java.util.Timer; /** * 任务管理 * @author admin_Hzw * */ public class TimerManager { /** * @param args */ public static void main(String[] args) { new TimerManager(); } //时间间隔(一天) private static final long PERIOD_DAY = 24 * 60 * 60 * 1000; public TimerManager() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, 1); //凌晨1点 calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); Date date=calendar.getTime(); //第一次执行定时任务的时间 //如果第一次执行定时任务的时间 小于当前的时间 //此时要在 第一次执行定时任务的时间加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行。 if (date.before(new Date())) { date = this.addDay(date, 1); } Timer timer = new Timer(); Task task = new Task(); //安排指定的任务在指定的时间开始进行重复的固定延迟执行。 timer.schedule(task,date,PERIOD_DAY); } // 增加或减少天数 public Date addDay(Date date, int num) { Calendar startDT = Calendar.getInstance(); startDT.setTime(date); startDT.add(Calendar.DAY_OF_MONTH, num); return startDT.getTime(); } }
以上是关于php实现每天凌晨1点处理订单的问题的主要内容,如果未能解决你的问题,请参考以下文章