我如何不断检查 php 中的 if 语句?
How do i constantly check a if statement in php?
我有一个 php if 语句来检查服务器时间,如果是某个时间,它会运行一个 jquery 函数。
问题是它只在页面加载时触发一次。我知道如何使用 javascript,但我需要 if 语句 php 因为我需要检查服务器时间,而不是用户浏览器的当前时间。
我想每 10 秒检查一次就比较理想了
footer.php中的代码:
<?php
date_default_timezone_set('Europe/Rome'); // CET
$info = getdate();
$hour = $info['hours'];
if ($hour >= 8 && $hour <= 22){ ?>
<script type="text/javascript">
jQuery(document).ready(function(){
document.getElementById("myid").innerHTML = "OPEN";
document.getElementById("myid").setAttribute("class", "open");
});
</script>
<?php }else{ ?>
<script type="text/javascript">
jQuery(document).ready(function(){
document.getElementById("myid").innerHTML = "CLOSED";
document.getElementById("myid").setAttribute("class", "closed");
});
</script>
<?php } ?>
您的 PHP 代码在页面加载时执行一次。只有当 PHP 完成时,结果 HTML 和 Javascript 才会发送到浏览器,以便您的访问者可以看到一些东西。
如果您想在用户访问您的网站时定期检查某些内容,那是 Javascript 而不是 PHP 的工作。由于您需要检查服务器时间而不是用户本地时间,因此最好的办法是使用 Ajax 每隔一段时间调用一个 PHP 脚本。
根据您想做的事情来判断,您真正需要知道的是服务器认为现在几点。我个人比较喜欢这种PHP脚本输出JSON,主要是因为Javascript可以很轻松的处理,所以一个简单的PHP脚本就足够了:
<?php
header('Content-Type: application/json');
date_default_timezone_set('Europe/Rome');
$info = getdate();
$hour = $info['hours'];
echo json_encode(['hour' => $hour]);
这将根据服务器输出一个包含当前小时的 JSON 对象,例如:{"hour":21}
您可以相对简单地使用 jQuery。将其包装在 setInterval
中以使其定期 运行。你每 10 秒提到一次,所以我将在这个例子中使用它:
<script>
setInterval(function() {
// change "/server_time.php" to point to wherever you put that PHP script above
jQuery.getJSON("/server_time.php", function(data) {
if (data.hour >= 8 && data.hour <= 22) {
document.getElementById("myid").innerHTML = "OPEN";
document.getElementById("myid").setAttribute("class", "open");
} else {
document.getElementById("myid").innerHTML = "CLOSED";
document.getElementById("myid").setAttribute("class", "closed");
}
});
}, 10000);
</script>
Quick disclaimer: I didn't test this code, so YMMV. It looks like it should work, but I didn't intend to fully solve your problem for you, rather to point out the way to go about it.
我有一个 php if 语句来检查服务器时间,如果是某个时间,它会运行一个 jquery 函数。
问题是它只在页面加载时触发一次。我知道如何使用 javascript,但我需要 if 语句 php 因为我需要检查服务器时间,而不是用户浏览器的当前时间。
我想每 10 秒检查一次就比较理想了
footer.php中的代码:
<?php
date_default_timezone_set('Europe/Rome'); // CET
$info = getdate();
$hour = $info['hours'];
if ($hour >= 8 && $hour <= 22){ ?>
<script type="text/javascript">
jQuery(document).ready(function(){
document.getElementById("myid").innerHTML = "OPEN";
document.getElementById("myid").setAttribute("class", "open");
});
</script>
<?php }else{ ?>
<script type="text/javascript">
jQuery(document).ready(function(){
document.getElementById("myid").innerHTML = "CLOSED";
document.getElementById("myid").setAttribute("class", "closed");
});
</script>
<?php } ?>
您的 PHP 代码在页面加载时执行一次。只有当 PHP 完成时,结果 HTML 和 Javascript 才会发送到浏览器,以便您的访问者可以看到一些东西。
如果您想在用户访问您的网站时定期检查某些内容,那是 Javascript 而不是 PHP 的工作。由于您需要检查服务器时间而不是用户本地时间,因此最好的办法是使用 Ajax 每隔一段时间调用一个 PHP 脚本。
根据您想做的事情来判断,您真正需要知道的是服务器认为现在几点。我个人比较喜欢这种PHP脚本输出JSON,主要是因为Javascript可以很轻松的处理,所以一个简单的PHP脚本就足够了:
<?php
header('Content-Type: application/json');
date_default_timezone_set('Europe/Rome');
$info = getdate();
$hour = $info['hours'];
echo json_encode(['hour' => $hour]);
这将根据服务器输出一个包含当前小时的 JSON 对象,例如:{"hour":21}
您可以相对简单地使用 jQuery。将其包装在 setInterval
中以使其定期 运行。你每 10 秒提到一次,所以我将在这个例子中使用它:
<script>
setInterval(function() {
// change "/server_time.php" to point to wherever you put that PHP script above
jQuery.getJSON("/server_time.php", function(data) {
if (data.hour >= 8 && data.hour <= 22) {
document.getElementById("myid").innerHTML = "OPEN";
document.getElementById("myid").setAttribute("class", "open");
} else {
document.getElementById("myid").innerHTML = "CLOSED";
document.getElementById("myid").setAttribute("class", "closed");
}
});
}, 10000);
</script>
Quick disclaimer: I didn't test this code, so YMMV. It looks like it should work, but I didn't intend to fully solve your problem for you, rather to point out the way to go about it.