1

我有多个 php xpath 代码,加载大约需要 5 到 10 秒。

如果这会有所不同,这是代码:

<?php

$html_string = file_get_contents('https://website.com/');
$dom = new DOMDocument();
libxml_use_internal_errors(true);
$dom->loadHTML($html_string);
libxml_clear_errors();
$xpath = new DOMXpath($dom);
$values = array();
$row = $xpath->query('//*[@id="wsod_forecasts"]/div[2]/p/strong');
foreach($row as $value) {
   print($value->nodeValue);
}

?>

我的问题是,是否可以在加载代码时创建简单的加载图像或文本?

像这样:

<image loading script>
<?php ?>
</image loading script end>

有任何想法吗?谢谢。

4

2 回答 2

2

是否可以在加载代码时创建简单的加载图像或文本?

是的,但不是你想的那样。考虑到 PHP 代码在服务器上运行,直到页面在客户端呈现之前完成。一个请求,PHP 代码运行,然后一个响应,然后页面呈现。

所以你想把你的逻辑分解成两个请求。所以操作的顺序是这样的:

  1. 用户请求页面。
  2. 最少(甚至没有)PHP 代码会立即返回一个页面。
  3. 客户端(JavaScript) 代码显示某种“加载”指示。(或者默认显示,没关系。)
  4. 客户端代码向不同的 PHP 文件发出 AJAX 请求。
  5. PHP 文件执行您现在拥有的逻辑,这需要一些时间,并以 JSON 格式返回数据。
  6. 客户端代码接收 AJAX 响应,更新页面内容,并移除“正在加载”指示符。

这是一种非常常见的方法,有很多教程可以帮助您开始使用 AJAX 调用 PHP。但这里的重点是将“页面加载”逻辑与“内容加载”逻辑分离为两个不同的请求,从而提供整体更好的用户体验。

于 2021-02-13T14:40:35.217 回答
0

简短的回答是否定的,不是 PHP。

原因是 PHP 是一种服务器端语言。当客户端(用户)向网页发出请求时,服务器会收到请求,然后将请求路由到适当的位置(在本例中为 PHP 文件)。然后 PHP 构建 html 以发送回客户端,以便浏览器可以呈现它。

当所有这些都发生时,客户端必须等待,没有办法知道服务器上发生的事情的进度。

在等待时获取加载图标的最佳方法是返回一个没有太多信息的简单页面。此页面应包含加载图标以及用于向服务器发出另一个请求的 JavaScript。这将是一个AJAX请求,javascript 需要对其进行解释以呈现返回的数据。

于 2021-02-13T14:42:17.863 回答