我正在使用RapidWeaver在www.chocchoc.club/blog/index.php上创建博客页面
由于程序的工作方式,我无法手动为每个页面设置元标记,因此尝试使用某些PHP进行操作,这样我就可以设置一些OG的Twitter卡元信息。在这种情况下,我正在使用一个函数从HTML获取URL和站点标题。这是我到目前为止所拥有的......
在php页面的最开头:
<?php
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
function getTitle($url){
$str = file_get_contents($url);
if(strlen($str)>0){
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
return $title[1];
}
}
?>
这应该将变量$ url设置为页面的URL,并设置函数getTitle以获取页面的<title>
标记内的文本。
以下是我用于将其放入文档的HTML和PHP:
<meta property="og:url" content="<?php echo $url; ?>" />
<meta property="og:title" content="<?php echo getTitle("$url"); ?>" />
现在这可以工作并生成我想要的HTML ...
<meta property="og:url" content="http://www.chocchoc.club/blog/files/important-news.php" />
<meta property="og:title" content="'We're stockpiling Flakes!' Brits in US aghast at Cadbury's ban | #ChocChoc Blog" />
但是,我在Godaddy共享托管上托管,自从实现此代码后,我收到了很多服务不可用错误。
检查CPU和并发连接页面时,我收到以下消息:
您的网站在过去24小时内受到限制 进入流程(同时运行的php和cgi脚本的数量, 以及cron作业和shell会话)限制712次
以下是过去24小时的输入流程图(我在网站上工作后的早上写这篇文章,然后查看它们就这样了。)
http://www.chocchoc.club/images/ep_godaddy.tiff
(无法发布图片,因为这是我的第一篇文章)
以下是日志中的详细信息:
http://www.chocchoc.club/images/cpu_connections_usage_details.tiff
奇怪的是,对我来说,15:00是午夜,当我独自离开时。但是...之后的过程持续了几个小时。
任何想法,如果这个PHP代码可能是罪魁祸首?!我的一个朋友说它可能是一个没有正确终止的功能?
感谢您收到任何帮助!
-Neil
答案 0 :(得分:0)
任何想法,如果这个PHP代码可能是罪魁祸首? 是的,您的代码处于循环
导致问题的原因
您的函数正在使用file_get_contents
此函数正在请求文件或网页的内容并将其放入字符串中。如果是网页,则将html从本网站中删除,并像普通的http请求一样运行。
因此,您要求使用当前所在的同一网站。当您加载网站时,它会一次又一次地加载网站。所以他们处于循环中。
$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
«一遍又一遍地加载网站。
修复?
当我理解正确时,RapidWeaver软件无法通过简单的功能获取页面标题。当你有权访问核心时,你可以从那里改变它,也许写一个钩子/扩展使它成为可能。
如果您想使用file_get_contents
方式,可以这样做。因此,只解析来自用户的请求。但请注意,它是一种“脏”方式,可能导致内存过载和DDOS漏洞
$url = "http://" . $_SERVER[HTTP_HOST] . $_SERVER[REQUEST_URI] . "?mode=skip";
function getTitle($url){
if($_GET['mode'] != 'skip') {
$str = file_get_contents($url);
if(strlen($str)>0){
preg_match("/\<title\>(.*)\<\/title\>/",$str,$title);
return $title[1];
}
}
}