通过AJAX请求,每个用户都会多次调用该第一个脚本。它在另一台服务器上调用另一个脚本以获取文本文件的最后一行。它工作正常,但是我认为还有很多改进的余地,但是我不是一个很好的PHP编码器,因此我希望在社区的帮助下,我可以针对速度和效率进行优化:
对此脚本发出的AJAX POST请求
<?php session_start();
$fileName = $_POST['textFile'];
$result = file_get_contents($_SESSION['serverURL']."fileReader.php?textFile=$fileName");
echo $result;
?>
它对该读取文本文件的外部脚本发出GET请求
<?php
$fileName = $_GET['textFile'];
if (file_exists('text/'.$fileName.'.txt')) {
$lines = file('text/'.$fileName.'.txt');
echo $lines[sizeof($lines)-1];
}
else{
echo 0;
}
?>
我将不胜感激任何帮助。我认为在第一个脚本中可以做更多的改进。它产生了一个昂贵的函数调用(file_get_contents),至少我认为它很昂贵!
请您参考如下方法:
该脚本应限制将要返回的位置和文件类型。
想想有人尝试这样做:
http://www.yoursite.com/yourscript.php?textFile=../../../etc/passwd(或类似名称)
尝试找出延迟发生的位置.. HTTP请求是否花费很长时间,或者文件太大而导致读取花费很长时间。
如果请求很慢,请尝试在本地缓存结果。
如果文件很大,那么您可以设置一个cron作业,以固定的时间间隔(或每次更改)提取文件的最后一行,并将其保存到其他脚本可以直接访问的文件中。


