2016-09-19 69 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)然后如果值相同,则将结果默认为绿色以获得成功。这是一个更为全面的解决方案,即如果文件大小可能小于保存的值,并且仍然构成文件“已更改”,而不管文件大小是否变化。