Am încercat si așa. Ideea este că eu vreau să ofer posibilitatea tuturor articolelor să fie verificate pe rând în ordine după dată sau ceva, accesând un fișier prin cronjob la fiecare 5 minute. Am făcut și un cod cu order by rand() dar în acest fel le preia cum vrea el sau chiar dublicat…
Da, ar fi și asta o idee dar după ce sunt toate articolele verificate și actualizate cu is_checked=1 cum aș mai putea să le mai reverific? Pentru că eu vreau să fac asta odată la 5 minute cu toate, apoi s-o ia de la capăt și tot așa
$articole = $pdo->query("select * from articole where isk = 0 order by date limit 100");
if (!$articole->fetch()):
$pdo->prepare('update articole set isk = 0')->execute();
echo 'resetare...';
exit;
endif;
foreach ($articole as $row) {
$rss = @simplexml_load_file('https://url.com?vid='.$row['vid']);
$pdo->prepare('update articole set isk = 1 where vid=?')->execute([$row['vid']]);
if (isset($rss->content)):
// cod
else:
echo 'nu exista...'. PHP_EOL;
endif;
}
De ce preiei datele in PHP si nu faci update direct in baza de date? Din codul adaugat aici nu prea vad un motiv pentru care trebuie sa le preiei.
Ce precizie are acea coloana de date? Nu stiu ce faci cu datele respective insa este foarte posibil sa ramai cu inregistrari care vor avea acelasi moment iar ordonarea sa se faca ulterior si dupa alte criterii.
M-as folosi de o procedura direct din baza de date, as folosi o pricizie mai mare la data si as tine cont si de ultima rulare a procesului de update.
Eu nu am inteles nimic din povestea asta… Articolele introduse in baza de date sunt oricum in ordine de la cel mai vechi la cel mai nou. Daca vrei sa le vezi in ordinea modificarii lor (daca acest lucru se intampla) cred ca niste campuri created si modified sunt absolut suficiente. In plus faptul ca executi ceva la 5 minute pe baza de date poate crea inconsistente. Nu mi se pare corecta nici bucla aia in care faci o oarecare adugare cu delay dupa…