相关疑难解决方法(0)

内容长度和其他HTTP标头?

如果我在生成普通HTML页面时设置此标题,它是否会给我带来任何好处?

我看到那里的一些框架会设置这个头属性,我想知道为什么......(和其他标题一样Content-Type: text/html)

浏览器是否加载网站更快或更顺畅?

ps:他们这样做:

ob_start();

... stuff here...

$content = ob_get_contents();
$length = strlen($content);

header('Content-Length: '.$length);

echo $content;
Run Code Online (Sandbox Code Playgroud)

php http-headers

18
推荐指数
2
解决办法
6万
查看次数

如何异步运行PHP代码

如何在不等待的情况下异步运行PHP代码?我有一个长期运行(几乎无限)应该在服务器启动时运行,并且应该异步处理而无需等待.

我猜可能的选择是:

  1. 在网页中运行代码并保持打开状态以执行该任务
  2. 从某个命令行实用程序调用脚本(我不确定如何)将在后台处理.

我在本地服务器上运行PHP脚本,当发生某些事件时会发送电子邮件,例如生日提醒.

请建议如何在不在浏览器中打开页面的情况下实现此目的.

php

14
推荐指数
1
解决办法
2万
查看次数

如何在php脚本完成之前导致重定向?

我想运行一个PHP脚本,它会发送一堆电子邮件(新闻通讯),但由于它可能需要一段时间才能运行,我希望用户立即被重定向到一个页面,其中包含"您的新闻通讯排队等待的消息"送出."
到目前为止,标头重定向工作,但直到所有电子邮件发送后才会导致重定向.我可以在发送重定向后关闭连接,以便浏览器立即对重定向进行操作吗?我试过这样的东西


ob_start();
ignore_user_abort(true);
header( "refresh:1;url=waitforit.php?msg=Newsletters queued up, will send soon.");
header("Connection: close");
header("Content-Length: " . mb_strlen($resp));
echo $resp;
//@ob_end_clean();
ob_end_flush();
flush();

以各种排列和组合但无济于事.我怀疑它不能这么简单,但在我开始搞乱cron作业或自定义守护进程之前,我想我会考虑这种方法.谢谢

例如下面的块头建议,但没有运气

ob_start();
ignore_user_abort(true);
header( "refresh:1;url=mailing_done.php?msg=Newsletters queued for sending.");
header("Connection: close");
header("Content-Length: 0" );
//echo $resp;
ob_end_flush();
flush(); 
Run Code Online (Sandbox Code Playgroud)

php redirect header

9
推荐指数
2
解决办法
4578
查看次数

使用Symfony Process运行异步PHP任务

对于耗时的任务(电子邮件发送,图像处理......你明白了),我想运行异步PHP任务.

在Linux上很容易,但我正在寻找一种适用于Windows的方法.

我希望它变得简单,应该如此.没有火炮,没有SQL排队,没有一次又一次地安装东西 ......我只想运行一个该死的异步任务.

所以我尝试了Symfony Process Component.问题是,同步运行任务工作正常,但在异步运行时,它会沿主脚本退出.

有没有办法来解决这个问题?


composer require symfony/process
Run Code Online (Sandbox Code Playgroud)

的index.php

<?php
require './bootstrap.php';
$logFile = './log.txt';

file_put_contents($logFile, '');

append($logFile, 'script (A) : '.timestamp());

$process = new Process('php subscript.php');
$process->start(); // async, subscript exits prematurely…
//$process->run(); // sync, works fine

append($logFile, 'script (B) : '.timestamp());
Run Code Online (Sandbox Code Playgroud)

subscript.php

<?php
require './bootstrap.php';
$logFile = './log.txt';

//ignore_user_abort(true); // doesn't solve issue…

append($logFile, 'subscript (A) : '.timestamp());
sleep(2);
append($logFile, 'subscript (B) : '.timestamp());
Run Code Online (Sandbox Code Playgroud)

bootstrap.php中

<?php
require …
Run Code Online (Sandbox Code Playgroud)

windows asynchronous cross-platform symfony symfony-process

9
推荐指数
1
解决办法
5374
查看次数

WP插件中的异步php代码

需要使这块代码与其余代码异步。它会收集 wp 帖子并向我的网址发送帖子请求。该插件应异步运行,并且不会妨碍 wordpress 站点的运行。

for ($x=0; $x<=n; $x++) {
$data = posts[$x];
$ch = curl_init('http://myurl.com/');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'ACCEPT: application/json',
'Content-Length: ' . strlen($data))
);

$result = curl_exec($ch);
curl_close($ch);
}
Run Code Online (Sandbox Code Playgroud)

php wordpress curl asynchronous

6
推荐指数
1
解决办法
2355
查看次数

防止 PHP 等待 mail() 函数

在我的 Web 应用程序中,当用户更改其帐户时,我调用 php mail() 函数向该用户发送电子邮件通知。执行此操作后,我发现帐户更改操作需要非常长的时间(> 20 秒)才能完成。我怀疑这是因为 PHP 等待 mail() 函数发送电子邮件。有没有什么办法不用等待就可以直接调用下一行代码?

谢谢,

保罗

php email apache2

3
推荐指数
1
解决办法
4003
查看次数