|
|
|
| пхп скрипт выглядит следующим образом:
<?php
...
if(!mysql_query("DELETE FROM table WHERE Xdate=$date;")) echo mysql_error();
//Делаем INSERT ... по $date
...
?>
|
у меня такое ощущение, что скрипт не ждет когда произойдет удаление и начинает делать INSERT... и пока идет удаление те INSERT которые уже вставились удаляются вместе с ненужными данными...(ощущения основаны на сравнении affected rows до удаления и после, по логике скрипта их должно быть одинаково)..
как сделать так чтоб INSERT начинали писаться в базу ТОЛЬКО после удаления... | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 08:35)
| | Для этого можно модифицировать ваш скрипт не очень сложным образом..
<?
...
if(mysql_query("DELETE FROM table WHERE Xdate=$date;")){
//Делаем INSERT ... по $date
...}
else{echo mysql_error();}
?>
|
Надеюсь понятно.. | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 08:35)
| | Я бы порекомендовал сделать следующее:
<?
...
mysql_query("DELETE FROM table WHERE Xdate='".$date."'",$link) OR die(mysql_error());
//Делаем INSERT ... по $date
...
?>
|
И вокруг названия таблицы (table) и названия поля Xdate стоило бы поставиь обратные апострофы.
Тоесть то что при английской раскладке находитс ятам где буква Ё. | |
|
|
|
|
|
|
|
для: valenok
(23.06.2006 в 09:08)
| | по синтаксису учту замечания...
по сути дела, Вы предлагаете тоже самое что я написал только чуть в другой форме.
Подается запрос на DELETE и не дожидаясь завершения начинаются INSERT.
Если данных в таблице мало то INSERT не успеет выполниться до окончания DELETE, если же данных очень много то INSERT будет выполнять до завершения выполнения DELETE.
мож я где-то не прав, но результат выполнения моего скрипта наводит на такой вывод... | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 10:17)
| | Ну не правильный вывод.
Мой код не работает? | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 10:17)
| | Сам себе по синтаксису будешь делать замечания когда у тебя всё работать будет.
А пока:
mysql_query("DELETE FROM table WHERE Xdate=$date;")
Выполняется в любом случае поэтому, а вот правильный ли он и не возвращает ли он ошибки..
Подпрыгнуть то он подпрыгнет в любом случае, а вот если врежется ли он в потолок или нет
твоё условие это не интересует. | |
|
|
|
|
|
|
|
для: valenok
(23.06.2006 в 10:21)
| | Ваш код и смотрите что выходит:
<?php
...
mysql_query("DELETE FROM table WHERE Xdate=$date;");
echo mysql_error();
//Делаем INSERT ... по $date
...
?>
|
| |
|
|
|
|
|
|
|
для: valenok
(23.06.2006 в 10:22)
| | вы неправильно поняли что мне нужно
такой запрос выполняется без ошибок всегда и echo mysql_error() впринципе не нужен... а если вдруг там ошибка закралась то это решается просто die(mysql_error())....
вопрос заключается в том как сделать так чтобы скрипт продолжал выполняться только после завершения удаления огромного кол-ва данных(соответственно такой запрос в моем случае выполняется за 20-30 секунд).
сейчас скрипт посылает запрос на удаление и не дожидаясь когда все удалиться начинает посылать запросы на запись в базу | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 11:13)
| | Очень уже это странно..
Можно кусок кода побольше.. | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 08:35)
| | affected rows - это устанавливается только для изменяющих операций вроде DELETE, UPDATE и INSERT - если такой операции не было, то он не устаналвивается, какой оператор предшествует DELETE? У вас не вставляются данные или ещё что-то происходит? Что не нравится? | |
|
|
|
|
|
|
|
для: cheops
(23.06.2006 в 11:29)
| | скрипт читатет из файла данные и записывает их в базу. один файл - один день
алгоритм скрипта:
1.удаляем все записи за этот день
2.читаем файл и пишем в базу
проверяю следующим образом:
1. запускаю скрипт в первый раз (в базе за этот день ничего нет и DELETE выполняется мгновенно). в результате кол-во строк в таблице к примеру 1000000000.
2. запускаю скрипт во второй раз (DELETE выполняется за 20-30 секунд). в результате строк в таблице меньше например 999999000. (должно быть 1000000000)
вывод: во время выполнения DELETE выполняются INSERTы и соответственно удаляются пока DELETE не закончит выполняться. | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 11:45)
| | ??? | |
|
|
|
|
|
|
|
для: kaoz
(24.06.2006 в 15:11)
| | Ты хочешь чтоб они исполнялись паралельно?
Вряд ли так можно.. | |
|
|
|
|
|
|
|
для: valenok
(24.06.2006 в 15:21)
| | читай выше...
выходит что параллельно можно, а надо последовательно :) | |
|
|
|
|
|
|
|
для: kaoz
(25.06.2006 в 17:41)
| | Выходит что у тебя чтото странное творится... | |
|
|
|
|
|
|
|
для: kaoz
(23.06.2006 в 11:45)
| | А INSERT у вас какой? С задержкой или без? Приведите его, если не сложно? | |
|
|
|
|
|
|
|
для: cheops
(24.06.2006 в 16:08)
| | INSERT INTO table VALUES (1,2,3,4,5,6,7,8,....,N) | |
|
|
|
|
|
|
|
для: kaoz
(25.06.2006 в 17:40)
| | мож я туплю? | |
|
|
|