Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何更新原始文件中的元素,以便用户可以在处理文件时看到进度_Php_Jquery - Fatal编程技术网

Php 如何更新原始文件中的元素,以便用户可以在处理文件时看到进度

Php 如何更新原始文件中的元素,以便用户可以在处理文件时看到进度,php,jquery,Php,Jquery,我对jQuery越来越熟悉了,但是,我还没有弄明白这一点 我有一个收集数据并通过jQuery将数据发送到处理文件的页面。这是代码 $( "#start_it" ).click(function(){ var url = 'grunt/process.php'; var keywords = $("#keywords").val(); var providers = $('input[name="provide

我对jQuery越来越熟悉了,但是,我还没有弄明白这一点

我有一个收集数据并通过jQuery将数据发送到处理文件的页面。这是代码

$( "#start_it" ).click(function(){
            var url = 'grunt/process.php';
            var keywords = $("#keywords").val();        
            var providers = $('input[name="providers"]:checked').map(function (){return this.value;}).get().join(",");
            var networks = $('input[name="networks"]:checked').map(function (){return this.value;}).get().join(",");
            var ex_ct = $("#ex_ct").val();
            var list_type = $("#list_type").val();
            var shuffle = $("#shuffle").val();      
            var postit = $.post( url, {
                keywords:keywords,
                providers:providers,
                networks:networks,
                ex_ct:ex_ct,
                list_type:list_type,
                shuffle:shuffle             
                });     
            postit.done(function( data ) {alert(data);});       
        });
在process.php上,它通过每个提供者循环,在提供者循环中,它通过每个网络循环。我想做的是,当process.php在每个循环开始时在后台处理时,能够向位于集合页面上的用户显示正在取得的进展。代码如下:

foreach($providers as $provider){
        $pros = explode(',',$provider); foreach($pros as $pro){

            // I WANT TO BE ABLE TO UPDATE A DIV ON THE 
            // COLLECTION PAGE TO TELL THEM WHICH PROVIDER 
            // THE SCRIPT IS PROCESSING HERE



            foreach($networks as $network){ 
                $nets = explode(',',$network); foreach($nets as $net){

                // I WANT TO BE ABLE TO UPDATE A DIV ON THE 
                // COLLECTION PAGE TO TELL THEM WHICH NETWORK 
                // THE SCRIPT IS PROCESSING HERE





                } # $nets as $net
            } # $networks as $network
        } # $pros as $pro
    } # $providers as $provider
我在互联网和Stack上都搜索过,但我想我的查询并不清楚,因为返回的信息与期望的信息相差甚远

如蒙协助,将不胜感激


提前感谢,Pete

为了指示进度,您需要服务器响应以增量方式更新您

这并非不可能,但取决于您发送的数据,这并不值得。服务器呼叫和响应的成本很高,您应该尽量减少这些成本,因此,除非您正在上载大量数据(如视频或音频文件),否则最好不要继续访问服务器


为了解决这个问题,人们通常使用微调器(表示进度不确定)。

有很多方法可以实现这一点,其中一些方法取决于服务器的配置方式。您是否尝试过任何轮询或长轮询?不确定您所说的轮询或长轮询是什么意思/@petebolduc long polling正在向服务器发出一个需要很长时间才能完成的请求timeout@jcuenod谢谢我一定要研究一下这个。。。这里的处理过程很长。。。事实上,它根本不去服务器上。。。这是一个潜在客户开发脚本,通过php中的文件_get_contents()提取数据。如果你想尝试使用它,你可以在这里看一看:从设计角度看,我同意这要容易得多,但它并没有真正回答OP的问题。在某些情况下,您需要更多信息,示例:批量视频处理或非常大的上传。如果我无法理解,我计划使用旋转器,但脚本的竞争对手正在动态显示进度,虽然不是绝对必要,但我认为如果我这样做会很好well@petebolduc它是什么样的数据,因为如果它提交得很快,那么它真的毫无意义服务器上的多次点击微调器旁边的另一个设计选项只是一个简单的JS计时器,用于指示作业需要多长时间。通常,用户希望看到的只是发生了什么,假设作业平均速度非常快。@MariM这是一个替代解决方案,它解释了为什么进度条是一个较差的选项。诚然,您可以使用计时器,但倒计时是用于UX的,因为它给人一种确定端点的印象。