Okazało się, że tenże katalog puchnie jak diabli (usunięcie produktu z bazy nie kasuje pliku obrazka) więc wypada go odchudzić.
Na pierwszy rzut oka algorytm prosty jak konstrukcja cepa bojowego:
1. zaczytać do kolei nazwy obazków z katalogu
2. zapytać bazy o rekord, któy w polu z obazkiem na daną nazwę obrazka:
Kod
SELECT id FROM tabela WHERE obrazek LIKE '$plikzobrazkiem,.jpg%'
3. jeśli baza zwróci zero rekordów, to plik z obrazkiem usunąć (na szczęście nie usuwamy tylko przenosimy do katalogu pomocnicznego):
Kod
if (mysql_num_rows($q1) < 1 ) {
PrzeniesPlikObrazka
}
PrzeniesPlikObrazka
}
Wszystko jest cacy, tylko gdy skrypt straci połączenie z bazą z jakiegoś pwodu (np. zbyt duża liczba zapytań do bazy), to nagle katalog z obrazkami robi się pust,
bo baza nic nie zwróciła.
Wyłapałem, ze problem leży w składni:
Kod
if (mysql_num_rows($q1) < 1 )
i przerobiłem na
Kod
if (mysql_num_rows($q1) == 0 )
tylko teraz nie wiem, co zwóci funkcja mysql_num_rows() gdy połączenie z bazą zostanie zerwane.
Jak można upewnić się, ze zero zwrócone przez funkcję mysql_num_rows() to na pewno zero, które zwróćiła baza, a nie cos co się urwało z kosmosu z racji zerwania połączenia z bazą?