Cpanel Cron Job没有完全运行我的PHP代码

时间:2016-02-25 15:14:15

标签: php mysql curl cron

我有一个cron作业设置来运行一个PHP脚本,它将抓取一个站点,获取数据并放入一个mysql数据库。如果我只是导航到url代码工作正常。我为每条新记录获得了“New Record Created Successfully”消息,并且记录在我的数据库中。但是当我的cron运行它时,我只获得数据库连接的“Connected Successfully”消息。似乎没有其他任何东西执行。我的输入脚本如下。

<?php

//nba spider

require 'simple_html_dom.php';

//Upload a blank cookie.txt to the same directory as this file with a CHMOD/Permission to 777
function login($url,$data){
    $fp = fopen("cookie.txt", "w");
    fclose($fp);
    $login = curl_init();
    curl_setopt($login, CURLOPT_COOKIEJAR, "cookie.txt");
    curl_setopt($login, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($login, CURLOPT_TIMEOUT, 40000);
    curl_setopt($login, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($login, CURLOPT_URL, $url);
    curl_setopt($login, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($login, CURLOPT_FOLLOWLOCATION, TRUE);
    curl_setopt($login, CURLOPT_POST, TRUE);
    curl_setopt($login, CURLOPT_POSTFIELDS, $data);
    ob_start();
    return curl_exec ($login);
    ob_end_clean();
    curl_close ($login);
    unset($login);    
}                  

function grab_page($site){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($ch, CURLOPT_TIMEOUT, 40);
    curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
    curl_setopt($ch, CURLOPT_URL, $site);
    ob_start();
    return curl_exec ($ch);
    ob_end_clean();
    curl_close ($ch);
}

function post_data($site,$data){
    $datapost = curl_init();
    $headers = array("Expect:");

    curl_setopt($datapost, CURLOPT_URL, $site);
    curl_setopt($datapost, CURLOPT_TIMEOUT, 40000);
    curl_setopt($datapost, CURLOPT_HEADER, TRUE);
    curl_setopt($datapost, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($datapost, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
    curl_setopt($datapost, CURLOPT_POST, TRUE);
    curl_setopt($datapost, CURLOPT_POSTFIELDS, $data);
    curl_setopt($datapost, CURLOPT_RETURNTRANSFER, 1); // return the output in string format
    curl_setopt($datapost, CURLOPT_COOKIEFILE, "cookie.txt");
    ob_start();
    return curl_exec ($datapost);
    ob_end_clean();
    curl_close ($datapost);
    unset($datapost);    
}



login("#","#");
$post = post_data("#","#");

$html = str_get_html($post);
//print $post;


$servername = "localhost";
$username = "#";
$password = "#";
$dbname = "#";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";


foreach ($html->find('.teams_betting_options_advance') as $table) 
{
    //echo $table->innertext.'<br>';
    //$date = $table->find('.opt_advance_date');
    //echo $date.'<br>';

    // game date and time
    $date = $table->find('.opt_advance_date', 0)->innertext;

    //top line
    $team_top = $table->find('span[data-language]', 0)->innertext;
    $team_top_spread = $table->find('option[selected]', 0)->innertext;
    $team_top_spread =substr($team_top_spread, 0, -10);
    $team_top_money_line = substr($table->find('.tbl_betAmount_td', 1)->innertext, -4);
    $both_over = substr($table->find('option[selected]', 1)->innertext, 1, -10);

    //bottom line
    $team_bottom = $table->find('span[data-language]', 1)->innertext;
    $team_bottom = trim($team_bottom);
    $team_bottom_spread = $table->find('option[selected]', 2)->innertext;
    $team_bottom_spread =substr($team_bottom_spread, 0, -10);
    $team_bottom_money_line = substr($table->find('.tbl_betAmount_td', 6)->innertext, -4);
    $both_under = substr($table->find('option[selected]', 3)->innertext, 1, -10);


    //date time to mysql format
   $date = preg_replace("/&#?[a-z0-9]+;/i"," ",$date);
   $date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));





    //insert each into database
   $sql = 'INSERT INTO nba (date_time, team_top, team_top_spread, team_top_money_line, both_over, team_bottom, team_bottom_spread, team_bottom_money_line, both_under)
   VALUES ("'.$date.'", "'.$team_top.'", "'.$team_top_spread.'", "'.$team_top_money_line.'", "'.$both_over.'", "'.$team_bottom.'", "'.$team_bottom_spread.'", "'.$team_bottom_money_line.'", "'.$both_under.'")';

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}



}

$conn->close();
?>

1 个答案:

答案 0 :(得分:0)

听起来可能是权限问题。检查用户您的cron作业是否正在运行。