2014-01-19 3 views
0

Я попытался обновить столько строк с PHP, что мне пришлось сделать это с помощью ajax (потому что время выполнения на сервере слишком короткое для выполнения всех строк). Поэтому я сделал код, который должен вызвать .php-файл с кодом внутри, который обновляет идентификатор ROW в таблице mysql.AJAX action with cron-job?

У меня есть код

<html> 
<head> 
    <title>Cron job!</title> 
    <meta charset="UTF-8" /> 
    <script src="jquery.js"></script> 
</head> 

<html> 
<body> 

<div id="body"> 

</div> 

<script> 
    $(document).ready(function(){ 
     var array_items = <?=$table_info?>; 
     var updated_items = 0; 

     for(var i=0; i<array_items.length; i++){ 
      // pradedam kreipimąsi į kiekvieną rową jo updeitui su ajax 
      $.ajax({ 
       url: "ajax_cron.php", 
       type: 'POST', 
       dataType: 'json', 
       data: {update_id : array_items[i]['ids']}, 
       success: function (data) { 
        // kreipimąsis pavyko 
        if(data.updated_id){ 
         updated_items += 1; 
        } 
        $("#body").html(updated_items + " iš " +array_items.length + " updeitinta sėkmingai");     
       }, error: function(e){ 
        console.log(e.message); 
       } 
      });    
     } 
    }); 
</script> 

</body> 
</html> 

и это работает, когда я открываю URL с помощью браузера, но когда я делаю вызов этого сценария с хрон - Ajax не работает .. Так как заставить его работать ?

+0

Я не вижу, чтобы публикация данных через ajax решила проблему, сервер все равно должен выполнить и вернуть ответ в течение максимального времени выполнения. Я бы предложил увеличить время, как требуется в php ini – andrew

+0

Я отправляю через ajax только один запрос и делаю это много раз с помощью цикла. –

ответ

0

Ajax - это технология клиентской стороны, поэтому клиент (браузер) может выполнять сценарий и, самое главное, элементы DOM, которые могут быть прочитаны вашим Javascript.

Cron Job, с другой стороны, работает на CLI, который ничего не знает о DOM, когда там работает скрипт.

Так что, другими словами, то, что вы пытаетесь сделать, невозможно с помощью существующей веб-технологии, которую мы имеем. Однако вы всегда можете запускать сценарий на стороне сервера на cronjob, но на стороне клиента, нет, вы не можете.

+0

Возможно ли установить веб-браузер в VPS (например, mozilla) и сделать cron для '/ path/to/browser http: // mysite/mywebpage.php'? –

+0

Да, если вы запустите исполняемый файл браузера и вызовите URL-адрес, код будет запущен в среде браузера. Но всегда лучше выполнять код PHP или серверный код с помощью cronjob. Если вы знаете, что делает PHP-скрипт при загрузке браузера, то почему бы не добавить PHP-код в cronjab. –