返回每个cURL请求的AJAX结果

Cur*_*tis 2 php ajax jquery curl

基本上,我的想法是做一些形式的" 实时cURL结果 "系统,它在每个请求执行时产生实时结果,例如我将有一个表格,其中包含需要通过cURL请求访问的网站列表根据每个cURL响应的结果,我需要使用AJAX函数将数据发送回我的页面我最初调用了执行此循环请求的文件

<?
    foreach($database['table'] as $row) {
       curl_init($row['url']);
       //the rest of the cURL request etc...

       //SEND cURL RESPONSE BACK TO AJAX AFTER EACH ROW!!!
    }
<?
Run Code Online (Sandbox Code Playgroud)

然后,我希望它在发生时返回每个cURL响应的结果,而不是等待完整脚本完成,然后立即返回它们.

这可能吗?如果是这样,我仍然会使用普通的AJAX请求?

Cla*_*lva 5

这个怎么样?

你将entie过程分解为3

过程1

您将ajax请求发送到访问数据库的php页面,并将URL列表发送回浏览器页面.[简单地回显Urls] [使用分隔符'|' 分开结果网址.]

过程2

上面进程的ajax成功处理函数现在将调用一个新的JavaScript函数,它执行下面的操作.

将url列表拆分为一个数组.

过程3 使用另一个ajax函数将URL列表逐个发送到服务器.

这样,一次只处理一个URL,并在处理结果后立即发回结果

下面是JavaScript中函数调用的原型,代码不是真实的,但是你可以全面了解它是如何工作的.

function ajaxCall_1()
{
    // get url lsit from server
    .onSuccess{
        process_url(data);
    }
}


function process_url(data){
    var url_array = data.split('|')

    fetch_urls(url_array,0); // sends the first url for processing
}

function fetch_urls(url_array,position){

  if(position < url_array.lenght){ // not exceeding the array count 
    ajax_call2(url_array[position],url_array,position); 
  }
}

function ajaxCall_2(url,url_array,position)
{
    // get url acced by  curl and send back the result
    .onSuccess{
        // do whatever with the data you want
        fetch_urls(url_array,position++) // or position+1 // to fetch the next url
    }
}
Run Code Online (Sandbox Code Playgroud)