Реклама на сайте Advertise with us

-

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 11/05/15 в 08:17       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:35), всего редактировалось 2 раз(а)

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 11/05/15 в 08:23       Ответить с цитатойцитата 

хотя бы строчку выложи, в которой он говорит о записи типа "тру" trollface.png

4
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 11/05/15 в 09:26       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:35), всего редактировалось 1 раз

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 11/05/15 в 10:32       Ответить с цитатойцитата 

да, надо смотреть целиком скрипт что там не так и почему в итерации пишется, а не разом все данные после всех циклов, файлов много чтоле?

попробуй добавить LOCK_EX для блокировки файла и FILE_APPEND для дозаписи

4
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 11/05/15 в 11:07       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:35), всего редактировалось 1 раз

0
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 11/05/15 в 12:23       Ответить с цитатойцитата 

Ailk писал:
Да там ничего особенного
есть кусок, кода, который работает в кроне.
Код:

public function Process ()
{
    set_time_limit(119); // 119s Limit execution time
    $startTime = time();
    $loopTime = 70; // 100 seconds iteration limit
    $sleepTime = 1; // seconds delay
    $finishTime = $startTime + $loopTime;
      
    while (time() < $finishTime) {
        if (! $this->stoppedScript()) {
            $this->rebuidPostImage();
        }
        sleep ($sleepTime);   
    }   
}

Он в общем управляет временем работы скрипта. в данном случае лимит 2минуты, между запусками крона.

вот. на обработку поста уходит примерно 3-10 секунд (~30 картинок). Как видно из первого куса, из отрезка в 119 секунд цикл работает всего 70. но поидее мог бы работать и 100 к примеру. Однако, если ставлю 100 то скрипт всегда завершается принудительно по истечению лимита времени при этом всегда выдает ошибку записи тумбы. Такое случается (редко, но бывает) даже на отрезке выполнения в 80 секунд, когда посты обработаны уже все и не случается вообще на отрезке в 70 секунд.


эта конструкция может работать, но будут возникать ошибки, например, на слабой машине (при сильной загрузке ЦП, при уходе в своп), вариант, что на обработку поста уйдет не 3-10 секунд, а все 60, в итоге запустится два крона подряд и результаты предыдущего будут утеряны, возможно?

у меня работает по крону скрипт, который импортирует базу данных около 1-2 гига туда-сюда, занимает это действо 5-30 минут, крон запускается каждую минуту
использую файл лок для отслеживания выполнения скрипта:
Код:

$fd = fopen('lock.file', 'w+');

// try to get an exclusive lock. LOCK_NB let the operation not blocking
// if a process instance is already running. In this case, the else
// block will being entered.
if(flock($fd, LOCK_EX | LOCK_NB )) {
    // your task's code comes here
    sleep(10);
    // ...
    flock($fd, LOCK_UN);
    echo 'success';
    $exitcode = 0;
} else {
    echo 'already running';
    // return 2 to let check.php know about that
    // task.php is already running
    $exitcode = 2;
}

fclose($fd);

exit($exitcode);

4
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 11/05/15 в 13:04       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:34), всего редактировалось 1 раз

0
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 11/05/15 в 13:27       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:34), всего редактировалось 1 раз

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 11/05/15 в 14:01       Ответить с цитатойцитата 

А серв физический или vps на openvz к примеру ?

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

4
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 11/05/15 в 14:34       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:34), всего редактировалось 1 раз

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 11/05/15 в 16:09       Ответить с цитатойцитата 

Попробую админов спросить. Сам пхп не может так кешировать. Т.е. делается это скорее всего на уровне системы.
Как вариант, после записи каждого файла вызывать clearstatcache();, может поможет.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

4
 



С нами с 24.10.04
Сообщения: 18881
Рейтинг: 9010


Передовик Master-X (16.03.2006) Передовик Master-X (01.04.2006) Передовик Master-X (16.04.2006) Передовик Master-X (01.05.2006) Передовик Master-X (01.11.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 11/05/15 в 17:41       Ответить с цитатойцитата 

Ailk писал:
В том и дело что ошибки возникают при принудительном завершении скрипта (сет_тайм_лимит(119)). Но, в отведенный интервал в 70 секунд скрипт работает, потом стоит. Это видно на счетчике из другого скрипта (прогресс трекер). Во время этого простоя продолжают записыватся тумбы. После принудительного завершения как ни странно данные не теряются (даже с интервалом в 100 и фатал еррором). Т.е. все равно сохраняется через некоторое время. Но в теории они могут потерятся если серв крашнется или ребутнут его.

серв довольно мощный. при пиковой (чуть более 11к одновременно сидящих онлайн) загрузке проц едва доходит до 50%


то есть данные совсем не теряются, а просто пишутся с задержкой, даже если скрипт убить? сомневаюсь, что эта проблема на уровне рнр

5
 



С нами с 11.10.12
Сообщения: 428
Рейтинг: 1032


Передовик Master-X (16.11.2012)
Ссылка на сообщениеДобавлено: 11/05/15 в 19:30       Ответить с цитатойцитата 

Stek писал:

Попробую админов спросить. Сам пхп не может так кешировать. Т.е. делается это скорее всего на уровне системы.
Как вариант, после записи каждого файла вызывать clearstatcache();, может поможет.


не clearstatcache, а fflush


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

apache, bash, css, elasticsearch, ffmpeg, html, js, mysql, mongo, nginx, php; *nix only

4
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 11/05/15 в 20:18       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:34), всего редактировалось 1 раз

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 11/05/15 в 20:58       Ответить с цитатойцитата 

johndoe2 писал:
не clearstatcache, а fflush

Возможно. А лучше то и другое, можно побольше smail101.gif

Ailk писал:
да может это просто особенности работы функций записи

Для пхп это не свойственно. У тебя случае какого нибудь кеширования на уровне системы нет ?
Как вариант возьми пару больших файлов и попробуй в другую директорию скопировать. Если будет мгновенное или не равномерное копирование - у тебя хостеры что то намудрили, видимо для уменьшения интенсивности записи на SSD.

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

4
 



С нами с 09.08.12
Сообщения: 185
Рейтинг: 378

Ссылка на сообщениеДобавлено: 12/05/15 в 21:03       Ответить с цитатойцитата 

Ailk писал:
Короче наткнулся на такую херню. Значит есть некий скрипт, режет тумбы там копирует картинки, ну как обычно в общем. Обнаружил недавно что он записывает как бы постфактум на диск. Т.е. скрипт выполняется, в определенный момент записывается файл, сообщение о записи типа "тру" но на самом деле он не записался сразу, а записался гораздо позже (уже после нескольких итераций цикла). Задержки бывают до 40секунд. Как так вообще получается, ктонить знает? Серв нагружен на дисках(ссд) до 60% всего.


ого - какойто асинхронный php

4
 



С нами с 09.08.12
Сообщения: 185
Рейтинг: 378

Ссылка на сообщениеДобавлено: 12/05/15 в 21:04       Ответить с цитатойцитата 

Ailk писал:
Код:

if(file_put_contents($file, $content))
    return true;

как-то так. Если запись не получается вернет ноль (прав там нет, папки не существует или еще какая херь)


> Функция возвращает количество записанных байт в файл, или FALSE в случае ошибки.
http://php.net/manual/ru/function.file-put-contents.php

пробовали сверять длину данных и результат от функции?

4
 



С нами с 09.08.12
Сообщения: 185
Рейтинг: 378

Ссылка на сообщениеДобавлено: 12/05/15 в 21:08       Ответить с цитатойцитата 

Ailk писал:
if (file_put_contents($thumbFile, $this->thumbler)) { 


вот это непонял есть же функция которая изображение в файл пишет.
http://php.net/manual/ru/function.imagejpeg.php
или
http://php.net/manual/ru/imagick.writeimage.php

4
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 13/05/15 в 17:17       Ответить с цитатойцитата 

-

Последний раз редактировалось: Ailk (18/09/16 в 00:34), всего редактировалось 1 раз

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 14/05/15 в 00:30       Ответить с цитатойцитата 

Мож это какая-то особенность файловой системы SSD диска? Вывод команды mount в студию.

4
 



С нами с 09.08.12
Сообщения: 185
Рейтинг: 378

Ссылка на сообщениеДобавлено: 31/05/15 в 10:05       Ответить с цитатойцитата 

Ailk писал:
Однажды столкнулся с проблемой этих функций, они наотрез отказывались писать в файл, с тех пор не использую их вовсе, во избежание так сказать.


незнаю, может версия php старая или собирали криво.

вы пишете свою обработку изображений php?
а внешнюю утилиту imagick не пробовали?

0
 



С нами с 09.08.12
Сообщения: 185
Рейтинг: 378

Ссылка на сообщениеДобавлено: 31/05/15 в 10:06       Ответить с цитатойцитата 

rickdeckard писал:
незнаю, может версия php старая или собирали криво.

вы пишете свою обработку изображений php?
а внешнюю утилиту imagemagick не пробовали?

0
 

💀💀💀

С нами с 31.05.10
Сообщения: 4689
Рейтинг: 728

Ссылка на сообщениеДобавлено: 31/05/15 в 10:11       Ответить с цитатойцитата 

-

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »