2014-10-22 2 views
1

내 Parse 데이터베이스의 특정 차트에서 모든 행을 삭제해야하는 PHP 스크립트를 실행중인 서버에서 cron 작업을 실행 중입니다. 새로운 공식 Parse PHP 라이브러리를 사용하고 있습니다.Parse의 PHP 라이브러리를 사용하여 클래스에서 모든 행을 삭제하는 방법은 무엇입니까?

지금까지 두 가지 접근 방식을 시도했지만 두 방식 모두 행의 60 % 만 삭제 관리합니다.

접근 1 :

$query = new ParseQuery("Chart"); 
$query->limit(1000); 
$results = $query->find(); 
for ($i = 0; $i < count($results); $i++) { 
    $object = $results[$i]; 
    $object->destroy(); 
} 

$query2 = new ParseQuery("Chart"); 
$query2->limit(1000); 
$results = $query2->find(); 
if (count($results) != 0) { 
    deleteRows(); 
} 
echo "Finished a loop"; 
} 

접근법 2 :

$query3 = new ParseQuery("Chart"); 

$query3->each(function($obj) { 
    $obj->destroy(); 
}); 

는이 일을 더 좋은 방법이 있나요? 문제를 일으킬 수 있다고 생각하는 두 가지가 있지만 서버가 PHP 스크립트의 실행 시간을 제한하고 있는지, 아니면 1000 번 이상의 행이있을 경우 한 번 이상 프로세스를 실행해야하는지 잘 모르겠습니다.

답변

0

더 많은 결과가 있는지 플래그를 사용하여이 플래그가 설정되어있는 동안 다시 루프 할 수 있습니다.

$not_finished = true; 
while ($not_finished){ 
    $query = new ParseQuery("Chart"); 
    $query->limit(1000); 
    $results = $query->find(); 
    for ($i = 0; $i < count($results); $i++) { 
     $object = $results[$i]; 
     $object->destroy(); 
    } 

    $query2 = new ParseQuery("Chart"); 
    $query2->limit(1000); 
    $results = $query2->find(); 
    if (count($results) != 0) { 
     deleteRows(); 
    } 
    echo "Finished a loop"; 
    } 

    $query = new ParseQuery("Chart"); 
    $result = $query->find(); 
    if (count($result) > 0){ 
     $not_finished = true; 
    } 
    else{ 
     $not_finished = false; 
    } 
} 
1

웹 응용 프로그램에 대해 PHP로 구문 분석을 사용합니다. 여기이 예는 도움이 될 수

require 'vendor/autoload.php'; 

use Parse\ParseClient; 
use Parse\ParseQuery; 
use Parse\ParseObject; 
use Parse\ParseException; 

$candidato = htmlspecialchars($_REQUEST['username']); 
$candidato = htmlspecialchars($_REQUEST['post']); 

if($candidato && $username){ 

try{ 
    ParseClient::initialize($app_id, $rest_key, $master_key); 

$query = new ParseQuery('like');  
    $query->equalTo("user", $username); 
    $query->equalTo("post", $post); 

     $res = $query->find();   

     $object; 

     for ($i = 0; $i < count($res); $i++) { 
      $object = $res[$i]; 
     } 

$object->destroy(); 

echo "object destroyed succesfully"; 

} catch (ParseException $ex) { 

echo $ex->getMessage(); 

} 

}else{ 
echo "not enough params"; 
} 

는 당신 감사

근무 알려줘
관련 문제