[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Работа скрипта
gam0ra
Всем привет
Если скажем мне надо удалить 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
Нет.
Только если ты не добавил строчку, которая это предотвратит
rooor
Цитата
то цыкл проработает еще 9 секунд??

Да
Kusss
gam0ra
а в базу это уходит одним запросом или их больше ? Если больше напишите количество.
inpost
gam0ra
Скрипт прекратит работу тогда, когда узнает, что соединения с клиентом отсутствует.
Хочешь этого избежать, пропиши:
ignore_user_abort(true);
set_time_limit(0);


_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
gam0ra
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 статей
и если юзер выдет на первой сикунде то удялятся остальные?
Kusss
Так наверное правильнее будет.
$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
всё верно понял.

_____________
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
Kusss
А что за прикол, почему не написать DELETE ... WHERE `date` < $date ? От множественного удаления спасает LIMIT, я часто ставлю LIMIT 100000

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Valick
Цитата
Так наверное правильнее будет.

а может всё-таки правильнее будет
DELETE FROM `article` WHERE `date` < $date


_____________
Стимулятор ~yoomoney - 41001303250491
Kusss
inpost
согласен, нужно было `date` < $date.
я просто переписал предыдущий пост, а то он корявый
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.