【发布时间】:2016-05-27 05:49:45
【问题描述】:
我想检测页面何时关闭并在 10 秒后使用 php 调用 url。由于php是服务器端,我想和JS不同的是,不管页面是否处于活动状态,它都会调用url。
调用网址:http://postback.com/?id=xx
【问题讨论】:
-
了解 setTimeout
标签: javascript php postback
我想检测页面何时关闭并在 10 秒后使用 php 调用 url。由于php是服务器端,我想和JS不同的是,不管页面是否处于活动状态,它都会调用url。
调用网址:http://postback.com/?id=xx
【问题讨论】:
标签: javascript php postback
关闭页面后,您将无法执行与用户相关的任何操作。
将 Cron 作业与 ajax 调用一起使用。
如果服务器仍然在线,Ajax 会发送到服务器。在数据库中保存时间戳以及一些唯一 ID 以识别浏览器。
每隔一两秒运行一次 Cron Job。检查数据库中的时间戳是否超过 10 秒。如果是这样,请使用 cUrl 调用您的 url
伪代码:
[js]
setInterval(
function () {
$.post('keepAlive.php?id='+$('#uid').val()),
}
4000
);
[PHP | keepAlive]
$db->insertOrUpdate($_GET['id'], time());
[PHP | cron]
$alive = $db->query('SELECT * FROM alive WHERE `time` < '.time());
foreach ($alive as $data) {
$this->sendCurl($data);
}
【讨论】:
浏览器中没有“关闭”事件,可能是出于安全原因。
This post 提供使用子窗口来控制关闭过程。 这样,在父窗口中放入如下代码:
var win = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');
var timer = setInterval(function() {
if(win.closed) {
clearInterval(timer);
setTimeout (function () {$.get( "http://postback.com/?id=xx" );}, 10000);
}
}, 1000);
此代码未经我测试。
【讨论】: