Php 单击停止按钮时,完全停止运行功能

Php 单击停止按钮时,完全停止运行功能,php,jquery,codeigniter,Php,Jquery,Codeigniter,我有一个URL列表要删除。我从html表中获取这些URL,并在控制器函数中将它们放入foreach循环中。我有两个按钮开始刮和停止刮 我正在运行一个在控制器中编写的刮片函数,通过单击“开始刮片”按钮的ajax函数调用该函数 现在,我的要求是在单击“停止刮削”按钮时停止当前正在进行的过程 我在谷歌上搜索了很多,并尝试使用Gloabal变量、会话等,但所有这些都只有在完成了挂起状态网络中的第一个过程后才能起作用 请帮助我,当我点击停止抓取按钮时,如何停止当前的php进程 下面是开始抓取的ajax调用

我有一个URL列表要删除。我从html表中获取这些URL,并在控制器函数中将它们放入foreach循环中。我有两个按钮开始刮和停止刮

我正在运行一个在控制器中编写的刮片函数,通过单击“开始刮片”按钮的ajax函数调用该函数

现在,我的要求是在单击“停止刮削”按钮时停止当前正在进行的过程

我在谷歌上搜索了很多,并尝试使用Gloabal变量、会话等,但所有这些都只有在完成了挂起状态网络中的第一个过程后才能起作用

请帮助我,当我点击停止抓取按钮时,如何停止当前的php进程

下面是开始抓取的ajax调用函数

$("#get_data").click(function()
    {
        var values = new Array();
        $.each($("input[name='case[]']:checked"), function() 
        {
            var data = $(this).parents('tr:eq(0)');
            values.push({ 
                'weburl':$(data).find('td:eq(3)').text() , 
                'id' : $(data).find('td:eq(2)').text() , 
                'state':$(data).find('td:eq(6)').text()
            });
        });
        sendmyarray(values);
    });

    function sendmyarray(values)
    {
       var location = '<?php echo base_url()?>';
       var x = $.ajax({
            type: "POST",
            url: location+'admin/AdminController/getArrayAndScrap',
            data: {myData:JSON.stringify(values)},
            beforeSend: function() { 
                $("#stop_get_data").css("display", "block");
                $("#get_data").prop('disabled', true); // disable button
            },
            success: function (response) {   
                $("#get_data").prop('disabled', false);
                $("#stop_get_data").css("display", "none");
                console.log(response);
                if(response == 'stop')
                {
                    alert("Process Stopped");
                }   
                if(response == " ends")
                {
                    alert("Process completed. Please check the status of the URLs processed!");
                }
                
            }
        });
    }
任何帮助对我都很重要。
谢谢

不可能用javascript终止php脚本。PHP脚本将继续运行其循环,直到完成。PHP在服务器端执行,javascript在浏览器上执行。也许有一种方法可以用套接字来做类似的事情,但我对它们的了解还不够,无法为您提供任何建议


您可以做的是在javascript端运行循环,并为每次迭代单独调用php函数。这将允许您随时使用javascript停止该过程。

谢谢,但不能这样做。您能告诉我如何通过javascript调用php库函数吗。例如:我有一个多任务库,我想在这个多任务库的背景中调用函数do_,那么我如何通过点击按钮调用这个函数呢?我正在使用下面的东西,但它不工作$('stop#u get_data')。单击(function(){});请帮忙!
public function getArrayAndScrape()
        {
            if(isset($_POST['myData']))
            {
                $json = $_POST['myData'];
                $myDataArray = json_decode($json,true);
                foreach ($myDataArray as $url) 
                {
                    $status = $this->CommonModel->getSingleData('dtl_scrap_status','ws_detail',array('dtl_scrap_id' => $url['id']));

                    if( $status['dtl_scrap_status'] != 'Scrapped')
                    {
                        $ch = curl_init();
                        curl_setopt($ch, CURLOPT_HEADER, 0);
                        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
                        curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 12); // 12 seconds
                        curl_setopt($ch, CURLOPT_URL, $url['weburl']);
                        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

                        $html = curl_exec($ch);
                        if($html === false)
                        {
                            $this->CommonModel->addData('ws_detail' , array('dtl_scrap_status' => curl_error($ch) , 'dtl_scrap_id' => $url['id'] , 'dtl_state' => $url['state'] , 'dtl_website' => $url['weburl']));
                            $this->CommonModel->updateData('ws_site_scrap_detail' , array('site_last_scrap_date' => date('Y-m-d')) , array('site_id' => $url['id']));
                    }
                        else
                        {
                            $doc = new DOMDocument();
                            @$doc->loadHTML($html);
                            
                            $nodes = $doc->getElementsByTagName('title'); // TITLE
                            $metas = $doc->getElementsByTagName('meta'); // Meta
                            $head = $doc->getElementsByTagName('h1'); // H1

                            if(isset($nodes->item(0)->nodeValue))
                            {
                                $title = $nodes->item(0)->nodeValue;
                            }

                            if(isset($head->item(0)->nodeValue))
                            {
                                $heading = $head->item(0)->nodeValue;
                            }

                            if(isset($metas))
                            {
                                for ($i = 0; $i < $metas->length; $i++)
                                {
                                    $meta = $metas->item($i);
                                    if($meta->getAttribute('name') == 'keywords') // Keyword
                                    $keywords = $meta->getAttribute('content');

                                    if($meta->getAttribute('name') != '')
                                    {
                                        if($meta->getAttribute('name') == 'description') // meta description
                                        {
                                           $description = $meta->getAttribute('content');
                                        }
                                    }elseif($meta->getAttribute('property') != '')
                                    {
                                        if($meta->getAttribute('property') == 'og:description') // meta Og:description
                                        {
                                            $OgDescription = $meta->getAttribute('content');
                                        }
                                    }
                                }   
                            }
                            curl_close($ch);

                            if(isset($url['state']))
                            {
                                $addDtl['dtl_state'] = $url['state'];
                            }
                            if(isset($heading))
                            {
                                $addDtl['dtl_program_name'] = $heading;
                            }
                            if(isset($title))
                            {
                                $addDtl['dtl_program_provider'] = $title;
                            }
                            if(isset($description))
                            {
                                $addDtl['dtl_program_description'] = $description;
                            }elseif(isset($OgDescription))
                            {
                                $addDtl['dtl_program_description'] = $OgDescription;
                            }
                            if(isset($keywords))
                            {
                                $addDtl['dtl_program_keywords'] = $keywords;
                            }
                            if(isset($url['weburl']))
                            {
                                $addDtl['dtl_website'] = $url['weburl'];
                            }
                            if(isset($url['id']))
                            {
                                $addDtl['dtl_scrap_id'] = $url['id'];
                            }
                            $addDtl['dtl_scrap_status'] = 'Scrapped';
                            if($this->CommonModel->addData('ws_detail' , $addDtl))
                            {
                                $this->CommonModel->updateData('ws_site_scrap_detail' , array('site_last_scrap_date' => date('Y-m-d')) , array('site_id' => $url['id']));
                            }else
                            {
                                // echo "Error";exit();
                            }                   
                        } // End of else    
                        
                    } // End of status check
                    else
                    {
                        $this->CommonModel->updateData('ws_site_scrap_detail' , array('site_last_scrap_date' => date('Y-m-d')) , array('site_id' => $url['id']));
                        // echo "alscrapped";exit();
                    }
                } // End of foreach
                echo "ends";
            } // End of if(isset)
        }
$('#stop_get_data').click(function()
    {
        return false (from the function which is in running state after click event of start scraping);
    });