我想将网页发送到浏览器。同时,它会在服务器中运行另一个php脚本,而不影响浏览器网页。
有没有办法只通过 php 和 jquery 来实现这一点?
ps1 我的脚本是一项繁重的任务,所以我不确定它是否会延迟网页发送。
我想将网页发送到浏览器。同时,它会在服务器中运行另一个php脚本,而不影响浏览器网页。
有没有办法只通过 php 和 jquery 来实现这一点?
ps1 我的脚本是一项繁重的任务,所以我不确定它是否会延迟网页发送。
我会这样做
exec("nohup php otherphpscript.php >/dev/null 2>&1 &");
您可以使用 curl() 在后台访问脚本
<?php
$curl = curl_init();
curl_setopt ($curl, CURLOPT_URL, "http://domain.com/script.php?s=email&m=message");
curl_exec ($curl);
curl_close ($curl);
脚本.php
<?php
// send an email confirming script.php was accessed (with params)
$subject = strip_tags($_GET['s']);
$message = strip_tags($_GET['m']);
mail('email@email.com',$subject,$message);
您也可以在文档加载时通过 ajax 异步执行此操作
我不是 javascript 人,所以有人可能会通过 ajax 解决问题,但它在测试中对我有用......
<script src="//code.jquery.com/jquery.js"></script>
<script>
$(document).ready(function() {
$.ajax({
type: 'POST',
url: 'script.php',
data: 's=subject&m=message',
cache: false,
success: function(data){
// put success stuff here
alert(data); // for testing
}
});
return false;
});
</script>
脚本.php
<?php
if($_SERVER['REQUEST_TYPE'] == 'POST') {
$subject = strip_tags(trim($_POST['s']));
$message = strip_tags(trim($_POST['m']));
if(mail('email@email.com',$subject,$message)) {
echo 'true';
} else {
echo 'false';
}
}
编辑:在评论中更新每个 OP 问题的答案。编辑:添加 ajax 示例
这是可能的。只需ping URL:
// 'ping' the url http://localhost/browser/path/to/script2.php
$host = 'localhost';
$path = '/browser/path/to/script2.php';
$fp = fsockopen($host, 80);
if($fp !== false)
{
$out = "GET $path HTTP/1.1\r\n";
$out .= "Host: $host\r\n";
$out .= "Connection: Close\r\n\r\n";
fwrite($fp, $out);
fclose($fp);
}
然后在 script2.php 中:
ignore_user_abort(true);
// your code goes here
// ...