2014-10-22 17 views
1

我正在運行PHP腳本的服務器上運行cron作業,該腳本應該從我的Parse數據庫中的特定圖表中刪除所有行。我正在使用新的官方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解析我的Web應用程序。 這裏這個例子可能會有幫助:

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"; 
} 

讓我知道,如果它的工作對你 問候

相關問題