Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не удается выполнить длительный скрипт
 
 автор: Ванек2010   (30.01.2012 в 10:31)   письмо автору
 
 

Подскажите, почему не удается выполнить длительный скрипт. Стоит nimp (сборка apache + nginx под windows) поставил в php.ini max_execution_time = 0, но все равно выбивает ошибку!
504 Gateway Time-out nginx

  Ответить  
 
 автор: Lotanaen   (30.01.2012 в 10:38)   письмо автору
 
   для: Ванек2010   (30.01.2012 в 10:31)
 

set_time_limit(600); скрипт будет до 600 секунд работать, если поставить 0, то пока полностью не отработает.

  Ответить  
 
 автор: Ванек2010   (30.01.2012 в 10:51)   письмо автору
 
   для: Lotanaen   (30.01.2012 в 10:38)
 

Пробовал не помогает.

  Ответить  
 
 автор: Lotanaen   (30.01.2012 в 11:01)   письмо автору
 
   для: Ванек2010   (30.01.2012 в 10:51)
 

а Ваш скрипт должен что-то в браузер выдавать? если только работать с БД либо грузить изображения, то скрипт будет продолжать работу не смотря на то что в браузере отобразится страница о тайм-ауте.

  Ответить  
 
 автор: Ванек2010   (30.01.2012 в 11:10)   письмо автору
 
   для: Lotanaen   (30.01.2012 в 11:01)
 

Скрипт рассылает на почту клиентов информацию, вывод на экран не треубется. Раньше все было нормально, сейчас нет.
В том то и дело, что после написания о тайм-ауте скрипт не перестает работать, но если закрыть окно браузера, то он перестает, хотя раньше он продолжал работать.

  Ответить  
 
 автор: Lotanaen   (30.01.2012 в 11:39)   письмо автору
 
   для: Ванек2010   (30.01.2012 в 11:10)
 

да я такое замечал не раз, но у меня это еще завсит в каком браузере я скрипт запускаю - например асли в опере, то после закрытия окна скрипт перестает работать, а если в ИЕ, то продолжает работу.

  Ответить  
 
 автор: Crux   (30.01.2012 в 12:22)   письмо автору
 
   для: Lotanaen   (30.01.2012 в 10:38)
 

nginx равнодушен к set_time_limit(), увеличить время выполнения скрипта в нем (могу конечно и соврать, но) можно только непосредственно в его файле конфигурации.

  Ответить  
 
 автор: cheops   (30.01.2012 в 10:41)   письмо автору
 
   для: Ванек2010   (30.01.2012 в 10:31)
 

Ограничение имеется еще и у Apache - он не будет бесконечно долго ждать ответа. Вам обязательно использовать Apache? Может просто запустить скрипт в командной строке?

  Ответить  
 
 автор: Ванек2010   (30.01.2012 в 10:48)   письмо автору
 
   для: cheops   (30.01.2012 в 10:41)
 

Наверно нет, как на виндовсе запустить в командной строке?

  Ответить  
 
 автор: cheops   (30.01.2012 в 11:17)   письмо автору
 
   для: Ванек2010   (30.01.2012 в 10:48)
 

Самый просто вариант просто скопируйте скрип в папку PHP и выполните там команду
php.exe имя_скрипта.php

PS Вообще вариантов масса, вплоть до планировщика заданий. Можно запустить командную строку и выполнить команду
C:/путь_к_php/php.exe D:/путь_к_файлу/имя_скрита.php
можно даже сделать, чтобы скрипты по двойному щелчку мыши запускались, назначив расширению .php, обработчик php.exe.

  Ответить  
 
 автор: Ванек2010   (30.01.2012 в 11:41)   письмо автору
 
   для: cheops   (30.01.2012 в 11:17)
 

php.exe. не помогло пишет, не поврежден, но предназначен для другого типа ПК.
Вбил в командную строку
C:\nimp\component\php\php.exe C:\nimp\htdocs\other\mailsend\mailSend.php

И ноль эмоций, в блокнот логов который показывает, что рассылка на данный ящик прошла успешно, не чего не занеслось.
На счет попытки запустить с веба, также, сдыхает на 2 ящике и перестает работать.

  Ответить  
 
 автор: cheops   (30.01.2012 в 11:49)   письмо автору
 
   для: Ванек2010   (30.01.2012 в 11:41)
 

Погодите у вас настроен почтовый сервер? Это отражено в php.ini? Тогда нужно еще указать путь к php.ini в параметре -c.
C:\nimp\component\php\php.exe -c C:\nimp\component\php\php.ini -f C:\nimp\htdocs\other\mailsend\mailSend.php

  Ответить  
 
 автор: Ванек2010   (30.01.2012 в 12:09)   письмо автору
 
   для: cheops   (30.01.2012 в 11:49)
 

Вроде все успешно, спасибо!

  Ответить  
 
 автор: Ванек2010   (31.01.2012 в 16:44)   письмо автору
 
   для: cheops   (30.01.2012 в 11:49)
 

Появилась проблема, текст сообщения рассылается с картинками с помощью вашего кода. Так вот при запуске из командной строки путь до картинок надо указывать абсолютный, при этом картнки на почту отсылаются, но отбражаются файлом, а не встроены в html код.


<?php 
 
# Сами картинки
  
$picture[0] = "letter1.jpg"
  
$picture[1] = "letter2.jpg"

 
# Табличка и встроенная картинка
  
............<td><img src='cid:".md5($picture[0])."'></td>..........

 
# Ф-я отправки
function send_mail($mail_to$thema$html$path)    

    
$EOL "\n"
    
$boundary     "--".md5(uniqid(time())); 
    
$headers    "MIME-Version: 1.0;$EOL";    
    
$headers   .= "From: test@domen.ru$EOL";   
    
// Вложение отсуствует 
    
$headers   .= "Content-Type: multipart/related; boundary=\"$boundary\"$EOL";   
       
    
$multipart  "--{$boundary}$EOL"
    
$multipart .= "Content-Type: text/html; charset=koi8-r$EOL";    
    
$multipart .= "Content-Transfer-Encoding: 8bit$EOL"
    
$multipart .= $EOL
    
$multipart .= str_replace("\r\n""\n"$html); 
    
$multipart .= $EOL

    if (!empty(
$path)) 
    { 
      for(
$i 0$i count($path); $i++) 
      { 
        
$file file_get_contents($path[$i]); 
        
$name basename($path[$i]); 
        
$multipart .=  "$EOL--$boundary$EOL";    
        
$multipart .= "Content-Type: image/jpeg; name=\"$name\"$EOL"
        
$multipart .= "Content-Transfer-Encoding: base64$EOL"
        
// Вложение отсуствует 
        // $multipart .= "Content-Disposition: attachment; filename=\"$name\"$EOL";  
        
$multipart .= "Content-ID: <".md5($name).">$EOL"
        
$multipart .= $EOL
        
$multipart .= chunk_split(base64_encode($file), 76$EOL); 
      } 
    } 

    
$multipart .= "$EOL--$boundary--$EOL";    
   
    if(!
mail($mail_to$thema$multipart$headers)) 
      return 
False
    else 
      return 
True;   
    exit;   

  Ответить  
 
 автор: cheops   (31.01.2012 в 16:56)   письмо автору
 
   для: Ванек2010   (31.01.2012 в 16:44)
 

>но отбражаются файлом, а не встроены в html код.
В смысле отображаются файлом?

PS Под новые вопросы лучше заводить новые темы.

  Ответить  
 
 автор: Ванек2010   (31.01.2012 в 17:22)   письмо автору
 
   для: cheops   (31.01.2012 в 16:56)
 

Как прикрепленные, но там где они должны быть их нет.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования