2015-05-21 28 views
1

我使用的RapidWeaver在www.chocchoc.club/blog/index.php創建一個博客頁面獲取輸入過程超負荷使用PHP動態地設置META標記

由於程序是如何工作的,我不能手動設置的所以每個頁面的元標記都試圖用一些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共享主機上託管,並且自實施此代碼以來,我收到了很多Service Unavailable錯誤。

當檢查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

嗨尼爾,你使用Windows或Linux的託管? –

+0

Linux主機與cPanel –

+0

這個函數經常被調用嗎?或者只是一次或兩次? –

回答

0

如果這個PHP代碼可能是罪魁禍首任何想法? 是的,你的代碼是一個循環

請告訴我造成您的問題

你的功能是使用file_get_contents此功能正在請求文件或網頁的內容,並把這個在字符串。在網頁的情況下,它將html從本網站中取出並像正常的http請求那樣運行它。

因此,您正在請求您目前使用的網站。當你加載網站時,它一次又一次地加載網站。所以他們在一個循環中。

$url = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";«一次又一次加載網站。

An Fix?

當我理解正確時,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]; 
     } 
    } 
    } 
+0

我不是專家,但主機面板上的內存使用情況顯示適度的使用情況,但沒有任何限制。問題出在進入流程(即同時訪問的人數) - 現在昨晚所有流量都來自我的IP地址,所以當我查看一個頁面時,就像我正在查看它幾百次。 –

+0

嗨尼爾。可能是這兩件事情在一起,可能是他們不是。我在prowebmasters上找到了這個話題http://webmasters.stackexchange.com/questions/51805/how-to-find-what-is-maxing-out-my-entry-processes希望能解決你的問題。 –

+0

假設它是頁面上的PHP,我使用的代碼有什麼問題嗎?如果代碼沒有問題,我會給GoDaddy打電話來嘗試追查問題。謝謝 –