2014-01-19 2 views
0

나는 서버에서 실행 시간이 모든 행을 실행하기에는 너무 짧기 때문에 Ajax를 사용하여 PHP로 많은 행을 업데이트하려고했습니다. 그래서 코드 내부에있는 .php 파일을 호출해야하는 코드를 만들었습니다.이 코드는 mysql 테이블에서 sended ROW id를 업데이트합니다.AJAX 액션 (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을 열 때 작동하지만 나는 cron 작업이 스크립트를 호출 할 때 - 작동하지 않습니다 아약스는 .. 그래서 그것이 작동하는 방법 ?

+0

아약스를 통해 데이터를 게시하면 문제가 해결 될 것이라는 것을 나는 알지 못합니다. 서버는 여전히 최대 실행 시간 내에 응답을 실행하고 반환해야합니다. 나는 PHP ini에서 필요한만큼 시간을 늘리라고 제안 할 것입니다. – andrew

+0

아약스를 통해 하나의 요청 만 보내고 루프를 사용하여 여러 번 해보십시오. –

답변

0

Ajax는 클라이언트 측 기술이므로 클라이언트 (브라우저)가 스크립트를 실행할 수 있어야하며 가장 중요한 것은 자바 스크립트에서 읽을 수있는 DOM 요소입니다.

반면에 Cron Job은 스크립트가 실행될 때 DOM에 대해 알지 못하는 CLI에서 실행됩니다.

다른 말로하면 현재 수행중인 작업은 현재 보유하고있는 웹 기술에서 가능하지 않습니다. 그러나 당신은 항상 cronjob하지만 클라이언트 측 스크립트에서 서버 측 스크립트를 실행할 수 있습니다.

+0

VPS (예 : mozilla)에 웹 브라우저를 설치하고'/ path/to/browser http : // mysite/mywebpage.php'에 cron을 수행 할 수 있습니까? –

+0

예, 브라우저 실행 파일을 실행하고 URL을 호출하면 코드가 브라우저 환경 내에서 실행됩니다. 그러나 항상 PHP 코드 나 서버 측 코드를 cronjob으로 실행하는 것이 더 좋습니다. 브라우저를로드 할 때 PHP 스크립트가 무엇을하는지 알면 cronjab에 PHP 코드를 추가하지 않는 것이 좋습니다. –