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

Форум PHP

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

 

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

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

тема: Sleep() работает не правильно
 
 автор: Ванек2010   (04.11.2012 в 11:27)   письмо автору
 
 

Здравствуйте, хотим выполнить рассылку на 20к ящиков своих клиентов. Проблемы начались с функцией задержки sleep(); (но скорей всего не с ней)
Имеется блокнот с ящиками пользователей, на каждой строке ящик. Скрипт проходится по всем ящикам и отправляет письмо.
В цикле скрипта используется функция sleep(50); задержка 50 секунд, дабы не попадать в спам e-mail сервисов.
Эта задержка работает правильно 15 минут, после чего начинаются странности. Начинают повторятся почты, видимо цикл заново начинает идти и sleep работает странно, 2 письма отправляет сразу, а только на 3 делает задержку.
Что это может быть?

  Ответить  
 
 автор: Ванек2010   (04.11.2012 в 15:50)   письмо автору
 
   для: Ванек2010   (04.11.2012 в 11:27)
 

Кое-что проверил и удивился. Блокнот на каждой строке имеет цифру по возрастанию.
1
2
3
4
5
6 .. и так до 100.
<?php

$fd 
fopen($dir.'test.txt','r');
  if(!
$fd) exit('Невозможно открыть файл');
  while(!
feof($fd)) 
  {
    
      
$num fgets($fd1024);
    
$result $num;

      
    
$fds fopen($dir.'result.txt''a');          
        if (
$fds == true) {
        
fclose($fds);  
        }

        
$fds fopen($dir.'result.txt'"a+b");             
        if (!
$fds) die("Невозможно открыть на запись"); 
        
fwrite($fds$result);
        
fclose($fds);
        
sleep(50); # ждем 50 секунд
    
  
}

В итоге получаем:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
0
19
1
20
2
21
3
22
4
23
5
24
6
25
7
26
8
27
9
28
10
29
11
30
12
31
13
32
14
33
15
34
16
35
17
36
18
0
37
19
1
38
20
2
39
21
3
40
22
4
41
23
5
42
24
6
Как такое объяснить?

  Ответить  
 
 автор: Sfinks   (05.11.2012 в 08:46)   письмо автору
 
   для: Ванек2010   (04.11.2012 в 15:50)
 

Вы скрипт из браузера запускаете?
Похоже, что браузер, решив что сервер не доступен, посылает второй запрос. Потом третий...
Впишите в скрипте отправки вывод текста в браузер со сбросом буфера, чтоб он видел, что ему отвечают:
echo "Письмо №$result отправлено<br>"; flush();

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

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