Parse.com — Как я могу удалить все строки из класса, используя библиотеку PHP Parse?

Я выполняю задание cron на моем сервере, на котором выполняется PHP для сценария, который должен удалить все строки из определенной диаграммы в моей базе данных Parse. Я использую новую официальную библиотеку 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 строк, мне нужно будет запустить процесс более одного раза?

1

Решение

Я использую Parse с 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";
}

Дайте мне знать, если это сработало для вас
С уважением

1

Другие решения

Вы можете использовать флаг, чтобы увидеть, есть ли еще результаты, и пока этот флаг установлен, повторите цикл.

$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;
}
}
0

По вопросам рекламы [email protected]