PHP HttpRequest创建网页-如何处理长响应时间


PHP HttpRequest to create a web page - how to handle long response times?

我目前在静态html页面上使用javascript和XMLHttpRequest来创建Zotero中记录的视图。除了一件事:页面的html标题。

我当然也可以改变<title>...</title>标签,但如果有人想发布的视图,例如facebook上的网页上的静态标题将显示在那里。

我想不出任何方法来解决这个问题,只是一个静态页面与javascript。我相信我需要一个从服务器动态创建的页面,做类似于XMLHttpRequest的事情。

对于PHP有HTTPRequest。现在问题来了。在javascript版本中,我可以使用异步调用。对于PHP,我认为我需要同步调用。这有什么好担心的吗?

也许有一些其他的方法来处理这个,我不知道?

更新:看起来那些试图回答的人根本不熟悉Zotero。我应该说得更清楚些。Zotero是一个参考数据库,位于http://zotero.org/。它有一个可以通过XMLHttpRequest使用的API(就是我上面说的)。

现在我不能在上面描述的场景中使用它。所以我想从我的服务器调用Zotero服务器。(通过PHP或其他方式)

如果你不熟悉这些概念,可能很难理解和回答这个问题。当然。)

更新2:对于那些对Facebook如何废弃你在那里发布的URL感兴趣的人,请在这里测试:https://developers.facebook.com/tools/debug

你可以通过测试看到没有javascript运行

对不起,我不确定我是否理解你想问的,你只是想改变页面标题吗?

为什么不使用javascript?

document.title = newTitle

Facebook希望在获取页面时出现标题(或opengraph:title标签)。它不会执行任何JavaScript为您填补空白。

一个很酷的解决方法是通过解析User Agent字符串来使用PHP检测Facebook scraper,并提供一个带有PHP而不是JavaScript已经填充的信息的页面版本。

据我所知,Facebook刮刀使用这个头用户代理:"facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"

您可以检查该字符串的一部分是否出现在标题中,并相应地加载页面。

if (strpos($_SERVER['HTTP_USER_AGENT'], 'facebookexternalhit') !== false)
{
    //synchronously load the title and opengraph tags here.
}
else
{
    //load the page normally
}