我有一个PHP脚本,它循环运行x次。 代码非常小并执行检查。 一些循环将在1秒内彼此运行并且它会变化..某些循环将以最多8秒的延迟运行。
我如何或可以在服务器上调整/调整(或指示我的专用服务器的管理员)将循环之间的时间减少到毫秒(或尽可能快)而不是1到8秒?
谢谢!
PHP代码
<style type="text/css">
#check { font: Arial, Helvetica, sans-serif; font-size: 12px; margin-bottom: 40px; }
.red { color: #C00; }
.green { color: #060; }
</style>
<?php date_default_timezone_set('Australia/Brisbane'); $var1 = "variable"; $var2 = 1; $var3=="no";
while ($var2 <= 50) {
$sApiUrl = "https://www.apiurl.com/";
$aParams = Array(
'uid' => "user",
'pw' => "key",
'command' => "command",
'sld' => "main",
'tld' => "ext");
$oCurl = curl_init();
curl_setopt($oCurl, CURLOPT_URL, $sApiUrl);
curl_setopt($oCurl, CURLOPT_POST, 1);
curl_setopt($oCurl, CURLOPT_POSTFIELDS, $aParams);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
$sResponse = curl_exec($oCurl);
curl_close($oCurl);
$oOutput = new SimpleXmlElement($sResponse);
foreach ($oOutput as $v1)
{
foreach ($v1 as $v2)
{
foreach ($v2 as $v3)
{
foreach ($v3 as $v4=>$temp)
{
if($v4=="text")
$var4 = $temp;
if($var4=="true")
{
$aParams = Array(
'uid' => "user",
'pw' => "key",
'command' => "command",
'sld' => "main",
'tld' => "ext",
'dosomething' => "yes");
$oCurl = curl_init();
curl_setopt($oCurl, CURLOPT_URL, $sApiUrl);
curl_setopt($oCurl, CURLOPT_POST, 1);
curl_setopt($oCurl, CURLOPT_POSTFIELDS, $aParams);
curl_setopt($oCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($oCurl, CURLOPT_SSL_VERIFYPEER, false);
$sResponse = curl_exec($oCurl);
curl_close($oCurl);
$var3=="yes";
}
}
}
}
} $checktime = date('h:i:s A'); echo "<div id=\"check\">$checktime, checked $var1<br>"; if ($var4=="true") echo "<div class=\"green\"> $var4"; else echo "<div class=\"red\"> $var4";
if ($var3=="yes") echo " and yes"; echo "</div></div>"; $var3=="no"; $loops++; } ?>
处理器信息
处理器#1供应商:GenuineIntel 处理器#1名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#1速度:1995.120 MHz 处理器#1缓存大小:6144 KB
处理器#2供应商:GenuineIntel 处理器#2名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#2速度:1995.120 MHz 处理器#2缓存大小:6144 KB
处理器#3供应商:GenuineIntel 处理器#3名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#3速度:1995.120 MHz 处理器#3高速缓存大小:6144 KB
处理器#4供应商:GenuineIntel 处理器#4名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#4速度:1995.120 MHz 处理器#4高速缓存大小:6144 KB
处理器#5供应商:GenuineIntel 处理器#5名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#5速度:1995.120 MHz 处理器#5缓存大小:6144 KB
处理器#6供应商:GenuineIntel 处理器#6名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#6速度:1995.120 MHz 处理器#6高速缓存大小:6144 KB
处理器#7供应商:GenuineIntel 处理器#7名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#7速度:1995.120 MHz 处理器#7高速缓存大小:6144 KB
处理器#8供应商:GenuineIntel 处理器#8名称:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz 处理器#8速度:1995.120 MHz 处理器#8缓存大小:6144 KB
内存信息
崩溃内核(0x0到0x0)的内存不在允许的范围内 内存:8302344k / 9175040k可用(2176k内核代码,80272k保留,901k数据,228k初始化,7466304k highmem)
系统信息
Linux server.myserver.com 2.6.18-194.17.1.el5PAE#1 SMP Wed Sep 29 13:31:51 EDT 2010 i686 i686 i386 GNU / Linux
物理磁盘
SCSI设备sda:1952448512 512字节hdwr扇区(999654 MB) sda:写保护已关闭 sda:模式感:03 00 00 08 SCSI设备sda:驱动器缓存:写回 SCSI设备sda:1952448512 512字节hdwr扇区(999654 MB) sda:写保护已关闭 sda:模式感:03 00 00 08 SCSI设备sda:驱动器缓存:写回 sd 0:1:0:0:附加scsi磁盘sda sd 4:0:0:0:附加scsi可移动磁盘sdb sd 0:1:0:0:附加scsi泛型sg4类型0 sd 4:0:0:0:附加scsi通用sg7类型0
当前内存使用情况
total used free shared buffers cached
内存:8306672 7887632 419040 0 508076 6496876 - / + buffers / cache:882680 7423992 交换:4095992 428 4095564 总计:12402664 7888060 4514604
当前磁盘使用情况
使用的文件系统大小可用使用%挂载 的/ dev /映射器/的VolGroup00-LogVol00的 898G 200G 653G 24%/ / dev / sda1 99M 19M 76M 20%/ boot 无4.0G 0 4.0G 0%/ dev / shm / var / tmpMnt 4.0G 161M 3.6G 5%/ tmp
答案 0 :(得分:1)
您是否使用数据库,电子邮件,Web服务或任何其他类似组件?通常,PHP脚本的性能最依赖于这些。
您可以使用Xdebug之类的分析工具来分析脚本并找到最慢的代码区域。然后,您可以优化此代码(例如内循环)以提高性能。
答案 1 :(得分:1)
我个人没有使用过,但我怀疑你需要考虑使用PHP中的curl_multi *东西 - 这似乎允许你一次执行多个请求。
请参阅http://php.net/manual/en/function.curl-multi-init.php
您的瓶颈几乎肯定是串行连接HTTP连接。 AFAIK curl_multi_ *函数将允许这些并行执行。