Виснет скрипт!

  • Автор темы Автор темы wheelman
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

wheelman

Участник
Топикстартер
Сообщения
7
Реакции
0
Периодически у пользователя скрипта возникает такая проблема: зависает ID при работе скрипта. При тестовом использовании скрипт отрабатывает за полчаса, бедный пользователь может мучиться с ним несколько часов. Причем при повторной закачке того же xml-файла с данными, проблема, как правило, не возникает. Скрипт написан на JS, и причем довольно навороченный, выполняет сразу несколько различных операций и на большом объеме данных. В чем может быть проблема и как ее можно решить?
Виталий Батушев писал, что он использует JS для небольших простых скриптов, а VB для более сложных проектов. Не в этом ли грабли? JS не тянет? Даст ли эффект упрощение скрипта, т.е. разбивка на несколько отдельных скриптов, выполняющих строго определенную функцию?
Может это быть связано с объемом обрабатываемых данных?
Стоит ли переписывать на VB?
Заранее спасибо.
 
Ответ: Виснет скрипт!

Повесить скрипт довольно просто, while(true) {...}, например. Думаю дело вовсе не в том, что JS не тянет. Дело, возможно, в распределении памяти. Если есть возможность, то нужно проследить корректность выделения память под массивы данных и корректность удаления этих массивов. Если данных много это может играть решающую роль. Описанная выше ситуация может запросто создаваться как следствие некорректной работы с массивом данных.
 
Ответ: Виснет скрипт!

На VB я пишу те проекты, которые требуют более "навороченных" диалогов. Всё остальное на JS. Почитал доку по скриптингу Photoshop CS2, видимо, совсем много буду делать на js – Бутрин не поверил, что адобы так хорошо все сделали :)
И они ступодово пасуться на нашем серваке :)
 
Ответ: Виснет скрипт!

vbatushev сказал(а):
Почитал доку по скриптингу Photoshop CS2

А где ее можно взять? На adobe.com только пока для cs. Вроде
 
Ответ: Виснет скрипт!

То, что в первую очередь ошибки надо искать в программе, понятно и так.
Свои массивы для обработки данных используются только на этапе инициализации, обрабатываются только стандартные массивы параграфов. При копании в скрипте с образцом файла, на котором виснет ID обнаружилась такая ситуация:
Пример кода:
for (var myCounter = 0; myCounter < myParagraphs.length; myCounter++)
{
if(myCounter==myParagraphs.length-1) alert (myCounter);
if(myCounter==myParagraphs.length) alert (myCounter);
// Обработка параграфа
...
if(myCounter==myParagraphs.length-1) alert ("Last paragraph is done.");
}
При выполнении соответственно вывод:
1093
Last paragraph is done.
Затем висяк. Виснет где-то на выходе из цикла. Только вот где?
 
Ответ: Виснет скрипт!

Без конкретного куска кода гадать бесполезно. Вдруг там у тебя зацикление на обработке параграфа? Или еще что, включая обработку множества знаков?
 
Ответ: Виснет скрипт!

Могу предположить, что "обработка параграфа" разрушает данные массива параграфов и первое же обращение к элементу этого массива после выполнения цикла обработки завешивает скрипт наглухо.
 
Ответ: Виснет скрипт!

Нашел в чем был глюк. В конце story были два пустых фрейма (незаполненные параграфами), а скрипт пытался сжимать последний фрейм, чтобы текст умешался полностью. А так как текста во фрейме то и не было, скрипту крышу и срывало.
Всем спасибо за поддержку :) .
 
Статус
Закрыто для дальнейших ответов.