PHP继续执行数据库

时间:2016-06-15 21:35:14

标签: php sql database

所以我正在尝试编写一个脚本,我可以使用电话号码填充数据库,然后将脚本放在列表中并将其全部发送到文本中。我正在使用“Nexmo”的服务有一个测试功能,您可以在其中输入数字到URL,然后执行URL以发送文本。我得到了数据库设置,除了数据库中的信息外,我得到了URL,但我有两个问题。

  1. 我的脚本只抓取第一个数据库条目,我需要它按ID下载列表。

  2. 我需要使用tp脚本重复自身,以便它抓取数据库中的下一个条目并发送下一个文本,直到它已经耗尽所有可能的数据库条目。

  3. 作为示例,脚本运行... URL填充了DB条目1并执行。文本已发送。重复进程,直到数据库中没有其他条目,但它用。填充链接。

    我相信我有大部分代码而且只是遗漏了一个小链接,我在下面发布了敏感信息。

    感谢您花时间阅读本文,或者帮助我。

        <?php 
    ini_set('max_execution_time', 1300);
    
    $dbhost = "localhost";
    $dbname  = "data_base";
    $dbuser = "dbusername";
    $dbpass = "passy";
    
    
    
    $conn = mysql_connect($dbhost, $dbuser, $dbpass) or trigger_error(mysql_error(),E_USER_ERROR);
    
    
    mysql_select_db($dbname);
    
        $sql = "SELECT  * FROM ha_n ORDER BY `id` ASC";
        $res = mysql_query($sql) or die(mysql_error());
        $row = mysql_fetch_assoc($res);
    
    
        $phone_fill = $row['phone_numbers'];
    
    
    
    $url = 'https://rest.nexmo.com/sms/json?api_key=5555555555&api_secret=555555555555&from=5555555555&to='.$phone_fill.'&text=Welcome+to+Nexmo';
    
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/6.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    $result = curl_exec ($ch); 
    curl_close ($ch);
    

1 个答案:

答案 0 :(得分:0)

像这样,但我建议使用PDO或MySqli而不是普通的mysql,因为(mysql_ *函数)被折旧并设置为从PHP 7开始删除

while( false !== ( $row = mysql_fetch_assoc($res) ) ){


        $phone_fill = $row['phone_numbers'];



    $url = 'https://rest.nexmo.com/sms/json?api_key=5555555555&api_secret=555555555555&from=5555555555&to='.$phone_fill.'&text=Welcome+to+Nexmo';


    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/6.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.7) Gecko/20050414 Firefox/1.0.3");
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1); 
    $result = curl_exec ($ch); 
    curl_close ($ch);
}

主要是为了获得迭代它们所需的所有结果。这基本上说循环直到$ row == false,每行都是下一条记录,我可能会建议在调用之间添加sleep(1)之类的内容,等待一秒钟,这样你就不会破坏他们的API但是这取决于他们允许你做什么,你可能也想在循环中做set_time_limit(300),这将给PHP 300秒执行每个部分,如果你有大量数字则不会超时。

如果你想让它像夜间一样运行,你可以使用像CRON这样的东西,如果你有C-Panel那么它将在那里的仪表板中。我有点先研究这个词。但基本上它允许您在特定时间或间隔执行php文件。像调度程序一样。

http://php.net/manual/en/book.pdo.php