需求:现在数据库里有1000个代理IP,然后我现在通过网址 url.com/ip.php来随机获取数据库里的1000个IP地址,每刷新一次,获取一个ip,并且已经获取的IP不会被再次获取,直到1000个ip全部获取完毕,数据库是动态更新,会不时的添加新的代理ip进去.
这个难吗,有哪位高手能给个源码不,要是能直接从txt里面获取最好了

解决方案 »

  1.   

    可以新增個字段ip_flag來標記是否已經獲取過,沒有獲取是0,獲取了就是1.
    查找的時候就是
    SELECT * FROM ip WHERE ip_flag = 0 ORDER BY RAND() LIMIT 1; //如果數據只有1000個左右的話可以考慮ORDER BY RAND(),多的話就用PHP來隨機。
    這樣的話就能隨機獲取到未獲取的數據了。
      

  2.   

    通过分页方式实现或者数组方式实现速度比较快。
    数据量小的时候用上面老兄说的可以。
    SELECT * FROM ip WHERE ip_flag = 0 ORDER BY RAND() LIMIT 1;数据量大的时候,百万以上。那就纠结死了。我就遇到过,用上面老兄的那个纠结啊。我用的是分页的方式。
    比如分页方式。
    1.先查询多少条,得出的值为$n;
    SELECT count(*) FROM ip WHERE ip_flag = 0;
    2.每次取多少条数据(分页),为$pagesize
    3.得到多少页 $pages;
    $pages=ceil($n/$pagesize);
    4.随机页码 $page;
    $page=mt_rand(1,$pages);
    5.随机页数 $offset
    $offset = $pagesize*($page-1);
    6.取数据
    SELECT * FROM ip WHERE ip_flag = 0 limit $offset, $pagesize