2016-09-19 70 views
0

我使用PHP和正則表達式中的fopen函數(remote_filesize())來獲取文件的大小,遠程(FOPEN,pre_match,破滅)。結果,或文件大小,使用函數回調附和道:remote_filsize($filename)其中$ filename是使用$行[「警報」]指數MySQL的PDO查詢得到的URL。警報是當程序窗口打開並運行上述功能時檢查的實際文件大小。使用返回值從函數分配給一個字符串

如何使用返回函數值來比較表中下一個索引行作爲比較值...如果行[alerts]的值大於row [status] - >舊值從最後一次檢查記錄頁面手動保存到數據庫。最終,我想用小於的結果突出顯示我的「記錄頁面」中的字段,以便根據尺寸變化有綠色背景或紅色背景(class =「危險或成功」)。

這是我用什麼,但它總是返回「綠色」的成功時,新的文件大小的值大於舊文件大小的值。實際上,我的表格數據字段的類始終是綠色背景,無論值的狀態如何。

<td class="overflow"> 
<?//php 
/** 
* gets files size to compare then compares size 
* of saved value @status to current callback value @alerts 
*/ 
if(!empty($row['alerts'])) { 
$filename = $row['alerts']; 
$oldfilesize = $row['status']; 
if(remote_filesize($filename) > $oldfilesize) { $highlite = "danger"; } else { $highlite = "success"; } 
echo "<a href='' title='$filename'>url</a>"; 
echo remote_filesize($filename); 
} 
//?></td> 
      <td class="<?php echo escape($highlite); ?>"><?php echo escape($row['status']); ?></td> 

id  alert  status 
------------------------ 
1 | 55000 | 55010 
------------------------ 

上面的結果表會告訴我,'status'的背景應該是紅色的,因爲尺寸大於'alert'值integer。我正在檢查的是如果文件已被更改(大小已更改)。

+0

而不是使用的fopen和正則表達式,你應該使用捲曲,做一個HEAD請求發送到遠程文件,看看該信息從'curl_getinfo'得到(它包含例如大小)。而不是這樣做兩次,你應該只做一次,並將其保存到一個變量中,並使用該變量進行比較。如果if語句沒有按預期執行,var_dump這兩個變量並查看它們包含的內容。 –

回答

0

坦白地說,這是那些深夜應-的 - 有 - 些咖啡情形之一。我通過簡單地檢查兩個值是否相同來解決這個問題。 if(remote_filesize($filename) == $newfilesize)然後如果值相同,則將結果默認爲綠色以獲得成功。這是一個更爲全面的解決方案,即如果文件大小可能小於保存的值,並且仍然構成文件「已更改」,而不管文件大小是否變化。