PHP - 如何通过Curl中的cron选项卡执行ajax方法?

时间:2017-12-18 11:15:16

标签: php ajax curl

我想知道如何在crontab中运行我的ajax请求? 我这里有一个从api获取数据的ajax请求,对于我执行ajax post请求以更新数据库中的行的每个数据。

我如何在Curl中执行此操作?

这是我的剧本,

function getDataFs()
{
    var _token = $("input[name='_token']").val();
    $.ajax({
        url: 'https://url/api/employees', 
        type: 'GET',
        dataType: 'json',
        xhrFields: {
            withCredentials: true
        },
        success: function(response){  
            console.log(response);
            for(i=0; i < response.length; i++)
            {
                $.ajax({
                    url: '/api/update_employees_list',
                    headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                    },
                    type: 'POST',
                    dataType: 'json',
                    data: { 'employee_data': response[i], '_token': _token },
                    success: function(response){
                        console.log(response);
                    }
                })
            }   
        }
    });     
}   

我还传递了请求标头和xhr字段,

我希望有人可以帮助我,如果在ajax上不可能,你可以帮我在Curl或任何可能的解决方案上做到这一点, 谢谢!

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作,并在Crontab中添加此文件。

//getting all initial response
$raw_response = doCurl('https://url/api/employees', false, 'GET');
$response = json_decode($raw_response);

//iterate them
foreach ($response as $value) {
    //set your headers
    $headers = array();
    //set your post data
    $post_arr = array();
    //make your sub requests.
    doCurl($url, $headers, 'POST', $post_arr);
}


function doCurl($url, $headers, $method = 'GET', $post_arr = array()){
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_URL, $URL);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);

    if ($method === 'POST') {
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post_arr);
    }

    if (!empty($headers)) {
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }

    curl_setopt($ch, CURLOPT_TIMEOUT, 30);

    $res = curl_exec($ch);
    curl_close($ch);
    return $res;
}

答案 1 :(得分:0)

AJAX是一种仅适用于您的浏览器的技术,但它基于常规HTTP请求。使用Firefox开发人员控制台,您只需将执行的AJAX请求复制到cURL调用即可。这可以在你的cronjob中使用