0

下面是我的 Ajax 代码,加载时间为 3 分 15 秒。可能是什么问题呢?

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <Script type="text/javascript">
    function im()
    {
    alert('iam in');
            var Name=document.getElementById("Name").value;
            var pointsize=document.getElementById("pointsize").value;
            var bckclr=document.getElementById("bckclr").value;
            var color=document.getElementById("color").value;
            var bcolor=document.getElementById("bcolor").value;
    var url='Name='+Name+'&pointsize='+pointsize+'&bckclr='+bckclr+'&color='+color+'&bcolor='+bcolor;
    alert("srihost.com/2.php?"+ url);
    alert(url);
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        document.getElementById("Div_Im").innerHTML=xmlhttp.responseText;
        document.getElementById("Div_Im").style.border="2px solid #A5ACB2";
        }

      }
    xmlhttp.open("GET","2.php?"+ url,true);
    xmlhttp.send();
    }
    </script>
    </head>
    <body>
    Enter Name: <input type="text" id="Name" onchange="im()" value="yourname"  name="Name" />
    pointsize: <input type="text" id="pointsize" onchange="im()"
    value="50" name="pointsize" />
    BackGround Color: <input type="text" id="bckclr" value="red"
    onchange="im()" name="bckclr" />
    FontColor: <input type="text" id="color" value="white"
    onchange="im()" name="color" />
    Border Color: <input type="text" id="bcolor" value="blue"
    onchange="im()" name="bcolor" />
    <div id="Div_Im">
    replace me
    </div>
    </body>
    </html>

这是我的服务器页面代码

$Name=$_GET["Name"];
$pointsize=$_GET["pointsize"];
$bckclr=$_GET["bckclr"];
$color=$_GET["color"];
$bcolor=$_GET["bcolor"];
$filename = 'im.png';
$font='Times-Roman';

$cmd = " -background $bckclr -pointsize $pointsize -font $font -fill $color ".
                " -strokewidth 1 -stroke $bcolor label:\"$Name\" ";

  exec("convert $cmd $filename");
  echo('<img src="'.$filename.'">');

它基本上是 Image Magick 代码,通过创建图像可以正常工作,但是当我使用 Ajax 时,加载需要很长时间。

4

3 回答 3

2

有两个原因可以实现。首先,您在文本框更改上执行 ajax。一次又一次地发送ajax请求。您应该仅在单击某些按钮/链接/提交时才调用 ajax,以便只发送一个 ajax 调用。同样在 php 方面,您使用 exec 和 convert 函数,如果第一种情况也是如此,这可能会很重。

于 2013-04-10T12:19:01.463 回答
2

在服务器端,执行可能非常慢。运行像 Firebug 这样的浏览器调试器,让您观察网络请求。验证问题是 HTTP 请求发送到您的服务器和收到响应之间的时间。

于 2013-04-10T12:58:57.323 回答
1

我假设您自己尝试了相同的命令,并且速度更快。

因此,请确保每当您在命令行上进行测试时,始终使用相同的用户“su www-data”用于 Debian。

然后总是有一个调试日志,这样你就可以确保参数都设置好了。

[编辑] 你在什么平台上运行?什么版本的php?什么版本的图像魔术师?

您应该添加更多详细信息,以便人们帮助您!

于 2013-04-10T12:03:02.427 回答