gam0ra
11.08.2014 - 04:24
Всем привет
Если скажем мне надо удалить 10000 записей в бд через цыкл и представим что в секунду сервер может удалить 1000 записей тоесть для того чтобы удалить 10000 записей потребуется 10 секунд если я запущу цыкл и закрою браузер на первой секунду то цыкл проработает еще 9 секунд??
ПРИМЕР
Ну допустим что мне надо выбрать все старые статьи в переменой $date дата
$result = mysql_query("SELECT * FROM `article` WHERE date < $date");
$row = mysql_fetch_array($result);
do{
$id_art = $row['id'];
mysql_query("DELETE FROM `article` WHERE id='$id_art' ");
}
while($row = mysql_fetch_array($result));
Допустим что статей 1000 и за 1 секунду он может удлаить только 1000 статей
и если юзер выдет на первой сикунде то удялятся остальные?
Zzepish
11.08.2014 - 04:28
Нет.
Только если ты не добавил строчку, которая это предотвратит
gam0ra
а в базу это уходит одним запросом или их больше ? Если больше напишите количество.
inpost
11.08.2014 - 17:43
gam0raСкрипт прекратит работу тогда, когда узнает, что соединения с клиентом отсутствует.
Хочешь этого избежать, пропиши:
ignore_user_abort(true);
set_time_limit(0);
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
gam0ra
12.08.2014 - 03:11
Kusss
Ну допустим что мне надо выбрать все старые статьи в переменой $date дата
$result = mysql_query("SELECT * FROM `article` WHERE date < $date");
$row = mysql_fetch_array($result);
do{
$id_art = $row['id'];
mysql_query("DELETE FROM `article` WHERE id='$id_art' ");
}
while($row = mysql_fetch_array($result));
Допустим что статей 1000 и за 1 секунду он может удлаить только 1000 статей
и если юзер выдет на первой сикунде то удялятся остальные?
Так наверное правильнее будет.
$sql = "
SELECT
*
FROM
`article`
WHERE
date < $date
";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0){
$del_id = array();
while ($row = mysql_fetch_assoc($result)){
$del_id[] = (int)$row['id'];
}
mysql_query("DELETE FROM `article` WHERE id IN (".implode(',',$del_id).") ");
echo '<br>Удалено '.count($del_id).' записей' ;
}
Игорь_Vasinsky
12.08.2014 - 11:54
всё верно понял.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
inpost
12.08.2014 - 11:59
KusssА что за прикол, почему не написать DELETE ... WHERE `date` < $date ? От множественного удаления спасает LIMIT, я часто ставлю LIMIT 100000
_____________
Обучаю веб-программированию качественно и не дорого:
http://school-php.comФрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Valick
12.08.2014 - 12:04
Цитата |
Так наверное правильнее будет. |
а может всё-таки правильнее будет
DELETE FROM `article` WHERE `date` < $date
_____________
Стимулятор ~yoomoney - 41001303250491
inpost
согласен, нужно было `date` < $date.
я просто переписал предыдущий пост, а то он корявый