【问题标题】:fetch multiple urls data using PHP Curl, Jquery In Loop使用 PHP Curl、Jquery In Loop 获取多个 url 数据
【发布时间】:2023-03-16 02:49:01
【问题描述】:

我从 (http://w3lessons.info/2012/01/03/facebook-like-fetch-url-data-using-php-curl-jquery-and-ajax/) 找到了这个脚本问题是我想用多个 url 循环执行。

<link rel="stylesheet" type="text/css" href="style.css" />
    <!--[if lt IE 7]>
        <link rel="stylesheet" type="text/css" href="style-ie.css" />
    <![endif]-->
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
<script type="text/javascript" src="js/jquery.livequery.js"></script>
<script type="text/javascript" src="js/jquery.watermarkinput.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
        // delete event
        $('#attach').livequery("click", function(){

            if(!isValidURL($('#url').val()))
            {
                alert('Please enter a valid url.');
                return false;
            }
            else
            {
                $('#load').show();
                $.post("curl_fetch.php?url="+$('#url').val(), {
                }, function(response){
                    $('#loader').html($(response).fadeIn('slow'));
                    $('.images img').hide();
                    $('#load').hide();
                    $('img#1').fadeIn();
                    $('#cur_image').val(1);
                });
            }
        });
        // next image
        $('#next').livequery("click", function(){

            var firstimage = $('#cur_image').val();
            $('#cur_image').val(1);
            $('img#'+firstimage).hide();
            if(firstimage <= $('#total_images').val())
            {
                firstimage = parseInt(firstimage)+parseInt(1);
                $('#cur_image').val(firstimage);
                $('img#'+firstimage).show();
            }
        });
        // prev image
        $('#prev').livequery("click", function(){

            var firstimage = $('#cur_image').val();

            $('img#'+firstimage).hide();
            if(firstimage>0)
            {
                firstimage = parseInt(firstimage)-parseInt(1);
                $('#cur_image').val(firstimage);
                $('img#'+firstimage).show();
            }

        });
        // watermark input fields
        jQuery(function($){

           $("#url").Watermark("http://");
        });
        jQuery(function($){

            $("#url").Watermark("watermark","#369");

        });
        function UseData(){
           $.Watermark.HideAll();
           $.Watermark.ShowAll();
        }
    });

    function isValidURL(url){
        var RegExp = /(ftp|http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/;

        if(RegExp.test(url)){
            return true;
        }else{
            return false;
        }
    }
</script>
<input type="hidden" name="cur_image" id="cur_image" />
<div class="wrap" align="center">
    <div class="box" align="left">
        <input type="text" name="url" size="64" id="url" />&nbsp;&nbsp;
        <input type="button" name="attach" value="Attach" id="attach" />
        <div id="loader">
        <div align="center" id="load" style="display:none"><img src="load.gif" /></div>
        </div>
</div></div>

有什么我可以循环并同时加载不同的不同网址的吗?请帮帮我!

【问题讨论】:

    标签: php javascript ajax curl


    【解决方案1】:

    在 JavaScript 中无法创建线程。
    所以你不能同时获取所有那些“不同的 url”。

    但是您可以“几乎”实现相同的目标,使用事件循环快速地逐一请求它们,而无需等待 HTTP 响应。谁最终变得非常快!

    比如说你想获取 3 个 url:

    • www.mysite.com/myurl1
    • www.mysite.com/myurl2
    • www.mysite.com/myurl3

    您可以使用 jQuery 编写类似的内容:

    $.get('http://www.mysite.com/myurl1', function(data) {
      alert('html for site 1:' +data);
    });
    
    $.get('http://www.mysite.com/myurl2', function(data) {
      alert('html for site 2:' +data);
    });
    
    $.get('http://www.mysite.com/myurl3', function(data) {
      alert('html for site 3:' +data);
    });
    

    它将“几乎”同时请求 3 页。 第一个 HTTP 请求将调用“alert('html for site x:...');”
    但你不知道女巫会先到。

    无论如何,您可能需要更灵活的东西。
    假设您要使用 200 个同时请求“几乎”同时请求 50,000 个页面。
    你可以用 JavaScript 写类似的东西:

    function getNextUrl(){
    
        urlIndex ++;
    
        if(urlIndex >= stopAtIndex){
            //nothing to do anymore in the event loop
            return;
        }
    
        $.get('http://www.mysite.com/myurl'+urlIndex, function(data) {
            // html receivend here
            getNextUrl();
        });
    
    }
    
    /* program start here */
    int urlIndex = 0;
    int stopAtIndex = 50000;
    int simultaneousRequest = 200;
    
    for( var i = 0; i < simultaneousRequest; i++ ) {
        getNextUrl();
    }
    

    【讨论】:

    • 如何创建事件循环?你能告诉我吗。谢谢
    • @SunilPatel 我所有的例子都在使用事件循环。我推荐你阅读javascript.info/tutorial/events-and-timing-depth
    • 再次感谢。我将脚本插入顶部脚本并尝试获取 URL 循环,但它不起作用。你能告诉我我需要在哪里插入你提供的脚本吗?
    • @SunilPatel 我猜你需要先学习基础知识,然后再跳入复杂的问题。您不能只是复制和过去的代码并期望它能够工作。您需要学习编程才能理解并根据需要扭曲代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    相关资源
    最近更新 更多