Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在多个本地时区中触发php中的时间事件_Php_Timezone - Fatal编程技术网

如何在多个本地时区中触发php中的时间事件

如何在多个本地时区中触发php中的时间事件,php,timezone,Php,Timezone,我有一个像这样的数组 $alerts = array( array('alert' => '04:30:30', 'zone' => 'Europe/Berlin'), array('alert' => '04:30:30', 'zone' => 'Asia/Bangkok') ); 挑战在于如何根据当地时间触发该事件? 有时可能会发生变化,加上一些大陆有夏季/冬季,而另一些大陆则没有 因为您已经有了很好的时区标识符,所以您应该将此数组中的每个条目都转换为Dat

我有一个像这样的数组

$alerts = array(
  array('alert' => '04:30:30', 'zone' => 'Europe/Berlin'),
  array('alert' => '04:30:30', 'zone' => 'Asia/Bangkok')
);
挑战在于如何根据当地时间触发该事件?
有时可能会发生变化,加上一些大陆有夏季/冬季,而另一些大陆则没有

因为您已经有了很好的时区标识符,所以您应该将此数组中的每个条目都转换为
DateTime
对象。这样就不需要手动计算下一次发生的时间


在拥有DateTime对象的大数组之后,对数组进行排序,使首先发生的项位于顶部。在那之后,你要计算在未来的几秒钟内触发器应该发生的时间,并在这段时间内
sleep()

你说的“触发器”是什么意思?您是否将PHP用作长时间运行的脚本?你在写cron作业吗?是的,它每分钟都由一个应用程序执行。我在想一个foreach数组,使用date\u defaut\u timezone\u set和mktime,并将其与本地时间的+/-60秒进行比较,但这似乎有点过头了。