Возможно ли заморозить объект на время?

moscower

Новичок
Возможно ли заморозить объект на время?

Добрый день

Стоит задача - остановить выполнение кода в объекте, сохранить полностью его состояние, чтобы впоследствии (после перезагрузки страницы к примеру) продолжить выполнение кода именно с того же самого места, в котором была остановка. Понятно что объект можно сериализовать и засунуть в сессию, а вот как продолжить выполнение с того же самого места - тут возникают проблемы.

Есть ли какое-нить универсальное решение (возможно при помощи какой-нить дополнительной библиотеки), чтобы сделать подобное?

Спасибо
 

HraKK

Мудак
Команда форума
Это вам не надо.
Не спрашивайте как можно реализовать бред который вы придумали, а спрашивайте как можно решить задачу.
 

moscower

Новичок
HraKK
позвольте с вами не согласиться, если есть возможность засериализовать объект, то прямым следствием из этого есть возможность продолжить выполнение с того самого метода и места, на котором оно прекратилось в момент заморозки.

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

HraKK

Мудак
Команда форума
Вы читать умеете?
Какую задачу вы пытаетесь решить с помощью этого бреда?
 

Фанат

oncle terrible
Команда форума
moscower
Давай я извинюсь за грубоватую манеру HraKK, а ты опишешь целиком задачу, которая тебя привела к такому вот решению.

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

moscower

Новичок
А задача собственно следующая - есть длительная по времени задача, нужно ее перегружать каждые некоторое кол-во времени, чтобы на сервере не сработал timeout. Сервера бывают разные, поэтому set_time_limit(0) не годится.
 

Фанат

oncle terrible
Команда форума
HraKK
ты не понял вопроса.
в сочетании с агрессивностью манеры это производит гнетущее впечатление.
 

moscower

Новичок
HraKK
возможно Вы имели в виду запустить скрипт через командный интерфейс, и читать данные о его выполнении, но такой способ тоже не годится, поскольку в safe_mode к примеру отключен доступ к командному интерфейсу.

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

HraKK

Мудак
Команда форума
*****
У него что-то работает долго. Незнаю что мне не важно. И выылетает через 30 сек, а он хочет продолжить это с момента разрыва.

Более простое решение - запускать через shell.
Я не прав?

-~{}~ 17.10.07 14:14:

moscower
Смените хостинг.

Пользователь запускает данный процесс при помощи веб-интерфейса, поэтому запланировать его на какое-то время не представляется возможным.
exec
 

Фанат

oncle terrible
Команда форума
а, логично.

Действительно, moscower задача интригует.
С одной стороны - не совсем обычная задача по длительному исполнению, а с другой - явный прицел на свобдное распространение, если такие жесткие требования к хостингу.
 

HraKK

Мудак
Команда форума
moscower
А что за задача что работает так долго?
 

moscower

Новичок
HraKK

об exec я уже писал, см. выше

Данный скрипт должен работать на максимальном кол-ве хостингов, он не расчитан на конкретный.
 

HraKK

Мудак
Команда форума
moscower
а вот как продолжить выполнение с того же самого места - тут возникают проблемы.
Я не могу вам ответить на этот вопрос пока вы не удосужитесь ответить на этот :
А что за задача что работает так долго?
 

moscower

Новичок
HraKK
задача... в данном случае проэкспортировать некоторую кучу данных (файлов и некоторых записей в БД - может быть очень много), при этом нужно смотреть на целостность данных в каждый момент времени экспорта, все это делается в несколько этапов - в нескольких методах, в которых при вызове сразу непонятно, будет ли именно на этом методе задержка или нет.

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

HraKK

Мудак
Команда форума
Что жто за продукт который много експортирует и расчитан на большинство хостингов? Да еще больше 30 секунд...
 

moscower

Новичок
HraKK
ну вот для примера есть такой продукт phpmyadmin - который при очень большом кол-ве экспорта данных может уйти по памяти или по timeout-у.

в моем продукте необходимо это избежать.

А вообще прошу, если нечего сказать, то лучше помолчите.
 

cDLEON

Онанист РНРСlub
moscower
А вы, я так понимаю, собираетесь разработать что то круче ?
И что пользователь вашего "продукта" будет ждать и смотреть на пустую страничку пока ваш скрипт будет выполнять свои "сложные" монипуляции?
БреТ.
Используйте Аякс для работы с большим количеством данных.
Ну там прелоадер например. Он показывает прогресс+дёргает скрипты, которые выполняют грязную работу. Т.е. всю задачу разложить на мелкие подзадачи.
---
Хотя, как я понял, в вашем случае этого сделать не получится.
Т.к. используется крон.
Вы можете свою задачу более подробно описать?
 

moscower

Новичок
Всем спасибо, уже ясно что такого нигде нет.

Так что будем писать свое.

Там и так используется ajax, и есть подзадачи, но они неравномерны по времени, и изначально неясно где будет задержка - на какой логической задаче, поэтому нужно именно по временному интервалу проверять.

крон там не используется.

Тему можно закрывать
 
Сверху