.exe-файл на сайте

R
На сайте с 08.11.2006
Offline
63
1553

Подскажите, в каком направлении копать...

Имеется сайт(страница) www.au-to.ru/index11.html

Посетитель заполняет форму - отправляет на сервер - там принимает .pl-файл, который запускает .exe-файл - результаты расчета пишутся в текстовый файл - из него результаты читаются, и формируется .html-страница с ответом, которая отправляется назад посетителю на страницу сайта и помещается во фрейм...

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

Подскажите, какие есть пути решения (я в этом совсем новичок, но постараюсь разобраться)

T.R.O.N
На сайте с 18.05.2004
Offline
314
#1
rootv:
там принимает .pl-файл, который запускает .exe-файл

судя по всему, получает pl и запускает perl.exe....

если не хочется обойтись без файлов, то как пример, использовать ID сесси, или текущее время в секундах, который и использовать в качестве имени выходного файла....

Но если говорить о примере, то гда там pl и exe?

PS даже не надейтесь что кто-то будет такую форму заполнять.....

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
Dim_K
На сайте с 11.07.2007
Offline
85
#2

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

Если есть автор exeшки, попросите его переделать запись рассчетов не в файл а в stdout. А из скрипта получить результат будет не проблема.

Если автора нет - скорее всего все плохо :)

ps. А вообще не совсем понятно зачем нужен exe? Скриптом рассчет сделать нельзя?

R
На сайте с 08.11.2006
Offline
63
#3
Dim_K:
Если есть автор exeшки, попросите его переделать запись рассчетов не в файл а в stdout.

Автор - есть, это - я. Раньше так и было - "в stdout". Но "перехват" чужих результатов расчета все равно был...

Dim_K:
ps. А вообще не совсем понятно зачем нужен exe? Скриптом рассчет сделать нельзя?

Скриптом расчитать нельзя... exe-файл среди прочего находит кратчайший маршрут по городу... ни один скрипт с такой задачей не справится, как я думаю...

rootv добавил 06.05.2010 в 00:27

T.R.O.N:
использовать ID сесси

Вот-вот-вот... это из какой области?! Связано с куками? Что читать?!

T.R.O.N:
или текущее время в секундах, который и использовать в качестве имени выходного файла....

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

T.R.O.N:
PS даже не надейтесь что кто-то будет такую форму заполнять.....

PS Эту форму посетители с большим удовольствием заполняют уже 7 лет... но сейчас иногда они стали наступать друг другу на пятки...

ZoomY
На сайте с 07.11.2008
Offline
165
#4

Сталкивался с подобным когда-то.

У Перла есть функция семафоров, которые блокируют файл для записи, пока в него пишется один процесс. Потом блок снимается и может писаться другой процесс. Функции semget и semop, если не ошибаюсь. Поищите по запросам "perl семафоры" и т.п.

Размещу ваши статьи на сайтах с тИЦ до 1400 по 5$ (/ru/forum/846111) Сейчас многие ищут хостинг за пределами России. Ukrnames - один из лучших вариантов: (http://ukrnames.com/?ref_id=114) и лидер рынка, и привычно, и по-русски, и вне юрисдикции РФ.
Dim_K
На сайте с 11.07.2007
Offline
85
#5
ZoomY:
Сталкивался с подобным когда-то.

У Перла есть функция семафоров, которые блокируют файл для записи, пока в него пишется один процесс. Потом блок снимается и может писаться другой процесс. Функции semget и semop, если не ошибаюсь. Поищите по запросам "perl семафоры" и т.п.

Рассчет в один поток - это аморально. Все посетители будут стоять в "очереди", пока кто-то не посчитает что ему надо.

rootv:
Автор - есть, это - я. Раньше так и было - "в stdout". Но "перехват" чужих результатов расчета все равно был...

Значит ошибка еще где-то была. Для каждого пользователя запускается своя копия программы со своими параметрами и другая копия никак не может повлиять на эту.

rootv:

Скриптом расчитать нельзя... exe-файл среди прочего находит кратчайший маршрут по городу... ни один скрипт с такой задачей не справится, как я думаю...

Ну это Вы погорячились. Если Вы не можете - не значит, что никто не может 🚬

T.R.O.N
На сайте с 18.05.2004
Offline
314
#6

rootv, если честно, я воще не понял, откуда там взялось exe?

форма у Вас отправляется в ***.pl. При чем тут exe? почему pl скрипт сам не выводит все юзеру?

Может Вы очень неправильно настроили связку IIS-Perl (я же не думаю что извратились и на винду прилепили апач).

Возьмите перл для IIS http://www.activestate.com/activeperl/ и будет Вам счастье

_vb_
На сайте с 25.07.2009
Offline
104
#7
rootv:

или IP... Но это тоже не склеивается...

Почему не склеивается?

my $md5 = Digest::MD5->new;

$md5->add($ENV{'REMOTE_ADDR'} . time);
my $file_name_for_user = $md5->hexdigest;
Саратовская фракция серча (). Давайте посчитаемся.
R
На сайте с 08.11.2006
Offline
63
#8

Всем огромное спасибо!

Простите, что не смог освоить всю предоставленную инфу...

но приемлемый практический выход нашел.

T.R.O.N:
откуда там взялось exe?
форма у Вас отправляется в ***.pl. При чем тут exe?

Так внутри ***.pl и запускается exe, обмен данными между ними идет через запись/чтение текстового файла.

T.R.O.N:
я же не думаю что извратились и на винду прилепили апач

...похоже, что именно так (если Вы имеете ввиду хостинг под Windows) - я ж самоучка...

T.R.O.N:
или текущее время в секундах, который и использовать в качестве имени выходного файла....

Вот на этом я и сделал...

Т.е. просто (примитивно) создал 10 разных ***.pl-обработчикв формы, имя которых выбирается от времени загрузки страницы. Вероятность, что в одну и ту же секунду на кнопку "посчитать" нажмут 2 пользователя с одним и тем же случайно выбранным обработчиком - практически нулевая...

D
На сайте с 14.01.2007
Offline
153
#9

а использовать уникальное имя для текстового файл?

R
На сайте с 08.11.2006
Offline
63
#10
Dinozavr:
а использовать уникальное имя для текстового файл?

Вопрос в том - где происходит "перехлест"? - Внутри *.pl (тогда, возможно, и в процессе использования текстового файла) или после его завершения?

Проверить не могу, но склоняюсь к тому, что все-таки после выхода из *.pl.

Когда не понять, где происходит "сдвиг", вариант с разными *.pl - надежнее (для меня)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий