2010-05-21 2 views
2

Итак, у меня есть этот код:PHP проблема с матрицей()

 } else { 

      $photograph_moderation = new PhotographModeration($this->photograph_id); 
      $photograph_moderation->purgePhotograph(); 

      //eventually take to an error page 
      die('image is not big enough to upload'); 

     } 

функция purgePhotograph() вызывается должным образом, когда это условие выполняется, но сценарий никогда не появляется, чтобы умереть. Есть ли причина, по которой смерть не будет вызвана здесь? purgePhotograph() не имеет команд убийства скриптов.

Вот функция purge_photograph:

public function purgePhotograph() { 

    $db = Connect::connect(); 
    $photograph_id = $db->real_escape_string($this->photograph_id); 

    $query = "SELECT * from photographs WHERE id='{$this->photograph_id}'"; 
    $result = $db->query($query); 
    $photograph = $result->fetch_assoc(); 

    if ($photograph['location']) 
    unlink($photograph['location']); 

    if ($photograph['thumbnail_location']) 
    unlink($photograph['thumbnail_location']); 

    if ($photograph['watermark_location']) 
    unlink($photograph['watermark_location']); 

    if ($photograph['xsmall_location']) 
    unlink($photograph['xsmall_location']); 

    if ($photograph['small_location']) 
    unlink($photograph['small_location']); 

    if ($photograph['medium_location']) 
    unlink($photograph['medium_location']); 

    if ($photograph['large_location']) 
    unlink($photograph['large_location']); 

    if ($photograph['xlarge_location']) 
    unlink($photograph['xlarge_location']); 

    if ($photograph['xxlarge_location']) 
    unlink($photograph['xxlarge_location']); 

    if ($photograph['xxxlarge_location']) 
    unlink($photograph['xxxlarge_location']); 

    $query = "DELETE from photographs WHERE id='{$this->photograph_id}'"; 
    $result = $db->query($query); 

    $query = "DELETE from photograph_tags WHERE photograph_id='{$this->photograph_id}'"; 
    $result = $db->query($query); 

} 
+1

Вы на самом деле попробовали это только с тремя строками, которые вы предоставляете, без промежуточных вещей? – Anthony

+0

Я никогда не видел, как умирает(). Почему вы так уверены, что purgePhotograph() когда-либо выходит? – timdev

+0

@ Энтони: Я думаю, что это комментарий TODO, как и в, в конце концов замените 'die' страницей с ошибкой :-) – Josh

ответ

1

Может быть, пришло время установить код php debugger module и сделать шаг над кодом.
xdebug и, например, netbeans как интерфейс хорошо работает.

2

Проверьте purgePhotograph() возвращает. Может быть, у этого есть deadloop или занимает очень долгое время.

+0

Или просто прокомментируйте это и посмотрите, работает ли die. Если это так, вы знаете, что проблема связана с 'purgePhotograph()' – Josh

0

Попробуйте поместить его в блок try/catch. Возможно, что-то бросает исключение, прежде чем умереть может быть выполнено.

Вы получаете какие-либо ошибки?

1

Вау, проблема была чисткаФотография() никогда не имела возврата 1; в конце. Я не знал, что это необходимо для выполнения следующих строк.

+0

«Я не знал, что это необходимо для выполнения следующих строк». Это не так. Множество встроенных функций PHP не имеет оператора return (также называемого возвратом 'void' в руководстве PHP), и выполнение продолжается в обычном режиме. Это, вероятно, свидетельствует о какой-то другой проблеме. – Powerlord

+1

Это не требуется. Была и другая проблема, которую вы, должно быть, случайно решили. BTW: Удостоверьтесь, что мой комментарий к основному потоку ... – ircmaxell

+0

Заявления завершены правильно, я просто поместил их в условные выражения и протестировал каждый – ThinkingInBits