Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как написать простой скрипт на перл(может не совсем простой)

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Тема с описанием Тестового скрипта
voltag
Отправлено: 13 Февраля, 2010 - 09:29:34
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Янв. 2010  


Помог: 1 раз(а)




Здравствуйте
Хочу написать простой тестовый скрипт на перл!

Что у меня есть:
1. Желание написать скрипт
2. Есть предустановленный Перл на Сервере
3. Я прочитал все уроки по перлу в Разделе "УРОКИ"
4. Думаю тему которую я подниму будет полезна не только мне.

Что я хочу:
Хочу в скрипте завести переменную и через каждые (например)3 секунды сделать инкримент другой переменной, которая при обращении к перл скрипту выводилась(и так на протяжении (например) 30 секунд. Я собираюсь обращаться с помощью Аякса к скрипту и получать данные.

Что я хочу то этого примера:
Несмотря на то что на (например) на ПХП это реализуется просто, но с оговорками. Оговорка заключается в том что мне будет необходимо запоминать Переменную с которой я проделываю Инкримент, а на перле нет,хотя на ПХП существуют и другие решения...

В чём проблема:
Я не знаю можно ли такое сотворить на Перл, а если можно, то как... куда правильно класть сами скрипты на сервер(хотя вопрос идиотский, но в некоторых случаях очень важный).... можно ли сделать скрытие самого скрипта потому, что при использовании Аякса он будет виден... а переменные сессии ПХП мне не будут дотупны, что бы например отсечь кто обращается к моему перл скрипту...

Простите меня глупово, за такие вопросы, но я просто не знаю ответов.
Ответив на мой Пост вы сэкономите мне много гугловремени )
Заранее спасибо

P/s за примеры кода буду благодарен очень

(Отредактировано автором: 13 Февраля, 2010 - 09:31:44)

 
 Top
JustUserR Модератор
Отправлено: 13 Февраля, 2010 - 13:53:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




Уважаемый voltag - попробую ответить на ваши вопросы Улыбка
Итак для начало я так понял что сервер Apache работает и на нем разрешено исполнение Perl-скриптов - то есть проставлена директива AddHandler cgi-script .pl .cgi и в папке с Perl-скриптами установлена опция Options +ExecCGI и выставлены права доступа 0XX7 для исполнения данного Perl-скрипта от самого Apache - то есть простейшая программа Hello world работает успешно и на данный момент вас не интересует возмоность запуска Perl-скрипта от имени заданного пользователя через эффективный бит setuid для пользователя
Если все так то пойдем далее
voltag пишет:
Хочу в скрипте завести переменную и через каждые (например)3 секунды сделать инкримент другой переменной, которая при обращении к перл скрипту выводилась(и так на протяжении (например) 30 секунд. Я собираюсь обращаться с помощью Аякса к скрипту и получать данные
То есть вам нужно реализовать простой механизм сессий на Perlе - и притом чтобы он сам сохранял номер сесиии в cookie или подставлял его в GET/POST-запросы как делает PHP при работе с сессиями Несмотря на то что я достаточно долго работал с Perl и разрабатывал на нем web-приложения - у меня не был необходимости использовать сессии в том смысле какие они есть в PHP - но я уверен что такие возможности должны быть в бибилиотеки CGI и в ближайшее время посмотрю как это реадизуется
voltag пишет:
Куда правильно класть сами скрипты на сервер
На самом деле куда угодно главное соблюсти условия запуска описанные мной в самом начеле - при этом разница может быть только в том случае если у вас четко распределены права доступа и нужно получать доступ к файлам внутри директории
voltag пишет:
Можно ли сделать скрытие самого скрипта потому, что при использовании Аякса он будет виден
На самом деле достаточно легко - например с помощью AJAX-запроса вы полылаете Perl-скрипту код доступа который он ловит и получает и соответственно выполняется - иначе он выдает Status: HTTP/1.1 404 Not Found и пользователь не узнает что такой Perl-скрипт существует на вашем сервере
voltag пишет:
Ответив на мой Пост вы сэкономите мне много гугловремени )
Заранее спасибо
Пожалуйста! Кстати интересная идея измерять поиск решения задачи в новой внесистемной единице изерения гугловремнеи Улыбка
voltag пишет:
P/s за примеры кода буду благодарен очень
Пожалуйста более точно конкретизируйте ваши задачи и условия их запуска и я постараюст привести коды соответствующих Perl-скриптов


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
voltag
Отправлено: 13 Февраля, 2010 - 16:08:36
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Янв. 2010  


Помог: 1 раз(а)




JustUserR пишет:
То есть вам нужно реализовать простой механизм сессий на Perlе - и притом чтобы он сам сохранял номер сесиии в cookie или подставлял его в GET/POST-запросы как делает PHP при работе с сессиями Несмотря на то что я достаточно долго работал с Perl и разрабатывал на нем web-приложения - у меня не был необходимости использовать сессии в том смысле какие они есть в PHP - но я уверен что такие возможности должны быть в бибилиотеки CGI и в ближайшее время посмотрю как это реадизуется

Я немного не то имел ввиду, хотя такая интерпретация тоже хороша и интересна. Простите я наверно неверно разъяснил что я хочу. Я хочу сделать то , что ПХП не может, а именно чтобы скрипт возвращал мне данные ВО ВРЕМЯ своей работы. Я знаю от Вас что на Перле можно реализовать например возврат количество закаченных байт на сервер, я так понял, это значит, что можно возвращать информацию о работе скрипта, причём незавершённого(я могу ошибаться). И я решил что я попробую написать пример, где ПЕРЛ скрип будет что-то делать и возвращать данные по запросу, не смотря на его незавершённость.... после того как я это подумал, я понял что мне без помощи не разобраться.... поэтому я этот пост и написал.

JustUserR пишет:
Итак для начало я так понял что сервер Apache работает и на нем разрешено исполнение Perl-скриптов - то есть проставлена директива AddHandler cgi-script .pl .cgi и в папке с Perl-скриптами установлена опция Options +ExecCGI и выставлены права доступа 0XX7 для исполнения данного Perl-скрипта от самого Apache - то есть простейшая программа Hello world работает успешно и на данный момент вас не интересует возмоность запуска Perl-скрипта от имени заданного пользователя через эффективный бит setuid для пользователя

да

JustUserR пишет:
На самом деле достаточно легко - например с помощью AJAX-запроса вы полылаете Perl-скрипту код доступа который он ловит и получает и соответственно выполняется - иначе он выдает Status: HTTP/1.1 404 Not Found и пользователь не узнает что такой Perl-скрипт существует на вашем сервере

Обязательно воспользуюсь... хотя есть некоторые НО...которые могут уместиться в Целом посте(позвольте не уточнять)... Отличный совет.

JustUserR пишет:
Пожалуйста! Кстати интересная идея измерять поиск решения задачи в новой внесистемной единице изерения гугловремнеи

Гугловремя... очень интересная величина(я сам додумался, но думаю я далеко не первый)... это время между началом поиска в Гугле вариантов решения задачи(или частичных методов) до момента теоретического её решения. Эффективность Гуглочаса зависит от многих параметров, но в большинстве случаев у нормальных программистов она одинакова(не затрагивая определения "нормальные программисты"). При измерение Гуглочасов на проблему необходимо учитывать что при поиске, человеку может попасться что-то интересное не относящееся к задачи, которая решается в данный момент... это тоже включается в гуглочасы или гугломинуты. Есть тоже интересная единица (тоже не думаю что я первый).. цена за Клик... можно мерить как в денежном эквиваленте например 1 клик - 1 доллар(это так же относиться и к кликни на банер получи 5 центов, но надо брать понятие шире), например за сколько кликов можно установить операционную систему Виндовс? потом смотрим на цену установки и легко вычисляем цену за клик ...можно применять время... 1 клик стоил мне 2 часов времени... возможно даже такое применение... "этот клик стоил 5 жизней". Например цена за ошибку в справочнике по медицине. Клик прекрасен в том, что это Минимальное действие(пожалуй самое минимальное и ленивое) и мы можем примерно оценить результат относительно этого минимума. Вот ещё пример, если сайт неправильно спроектирован и на нём сложно найти нужную информацию, то есть количество кликов чтобы добраться до нужный информации велико, мы можем сказать что ценность клика пользователя невелика... и хороши такие сайты, где программисты, предоставили нам возможность "ценного" клика(например Вы получаете информацию в 1-2 клика). Клик может быть применён например в "нагрузочном" выражении. Например при Клике на Поиск вам нужно просмотреть много записей в БД .. вы нагрузите БАЗУ и возможно нагрузите ПХП.. это тяжёлый клик.... если Вы грузите ХТМЛ контент, то это лёгкий клик.. и т. д.
Вроде всё... прошу прощение что я отвлёкся и много написал не по теме.
 
 Top
JustUserR Модератор
Отправлено: 14 Февраля, 2010 - 11:54:18
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




voltag пишет:
Я немного не то имел ввиду, хотя такая интерпретация тоже хороша и интересна. Простите я наверно неверно разъяснил что я хочу. Я хочу сделать то , что ПХП не может, а именно чтобы скрипт возвращал мне данные ВО ВРЕМЯ своей работы. Я знаю от Вас что на Перле можно реализовать например возврат количество закаченных байт на сервер, я так понял, это значит, что можно возвращать информацию о работе скрипта, причём незавершённого(я могу ошибаться). И я решил что я попробую написать пример, где ПЕРЛ скрип будет что-то делать и возвращать данные по запросу, не смотря на его незавершённость.... после того как я это подумал, я понял что мне без помощи не разобраться.... поэтому я этот пост и написал.
Ага теперь я понял что вы хотите - то есть Perl-скрипт будет выполняться достаточно долгое количетсво времени но при этом он будет продолжать возвразать данные клиенту Для начала надо сказать что вызов такого Perl-скрипта необходимо производить только с помощью Iframe или AJAX из уже загруженной статической страницы чтобы она не висела А далее ситуация очень простая - устанавливаете заголовок Connection: keep-alive и переменную $|=1 в Perl-скрипте - и после этого можете сопкой отправлять данные по немного с сервера а на клиенте проверять через некоторое время не изменилось ли содежримое блока и если изменилось то выполнять определенные действия Кстати такой метод гораздо лучше чем постоянные новые запросы потому что лучше и быстрее поддерживать одно TCP-соединение
voltag пишет:
Обязательно воспользуюсь... хотя есть некоторые НО...которые могут уместиться в Целом посте(позвольте не уточнять)... Отличный совет.
Пожалуйста используйте на здоровье Улыбка
voltag пишет:
Вроде всё... прошу прощение что я отвлёкся и много написал не по теме.
Хм да это однозначно в википедию в раздел про внесистемные единицы измерения


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
voltag
Отправлено: 14 Февраля, 2010 - 14:20:35
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Янв. 2010  


Помог: 1 раз(а)




JustUserR пишет:
Ага теперь я понял что вы хотите - то есть Perl-скрипт будет выполняться достаточно долгое количетсво времени но при этом он будет продолжать возвразать данные клиенту Для начала надо сказать что вызов такого Perl-скрипта необходимо производить только с помощью Iframe или AJAX из уже загруженной статической страницы чтобы она не висела А далее ситуация очень простая - устанавливаете заголовок Connection: keep-alive и переменную $|=1 в Perl-скрипте - и после этого можете сопкой отправлять данные по немного с сервера а на клиенте проверять через некоторое время не изменилось ли содежримое блока и если изменилось то выполнять определенные действия Кстати такой метод гораздо лучше чем постоянные новые запросы потому что лучше и быстрее поддерживать одно TCP-соединение


да и если это можно, то это потрясающе!!! Вобщем буду пробовать писать... просто эта штуковина даёт очень много всего в Вэб... я смогу динамически выдавать данные о работе скрипта.... правда было бы круче если я бы мог сделать непрерывно(простые запросы не подходят)... потом напишу что нибудь на ActionScript (Flash) и тунель готов )))...

Я понимаю что мне новичку ещё рано о таком спрашивать ... есть ли кешь байт кода перла?.... надеюсь мой вопрос понятен....
 
 Top
JustUserR Модератор
Отправлено: 14 Февраля, 2010 - 18:51:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




voltag пишет:
Да и если это можно, то это потрясающе!!! Вобщем буду пробовать писать... просто эта штуковина даёт очень много всего в Вэб... я смогу динамически выдавать данные о работе скрипта.... правда было бы круче если я бы мог сделать непрерывно(простые запросы не подходят)... потом напишу что нибудь на ActionScript (Flash) и тунель готов )))...
В принципе это конечно можно сделать ведь на Perl идет прямое и полностью контролируемое взаимодействие со шлюзом CGI - следовательно вы действительно можете обмениваться данными в течение одного сеанса HTTP-соединения
Но как вы понимаете даже с использованием keep-alive непрерывное получение сообщений возможно только в одну сторону - ведь клиент после отправки всего HTTP-запроса серверу Apache уже не может отправлять данные Дело в том что keep-alive запрос помогает поддерживать непрерывное TCP-соединение клиента и сервера Apache в рамках которого выполняется несколько независимых запросов (К примеру GET/POST запросов) - но при этом Perl-скрипт будет вызван только тогда когда он указан в данном запросе и установлен обработчик CGI-скриптов для него Об использовании немного написано здесь http://forum[dot]codenet[dot]ru/showthread.php?t=55602
Как вариант решения данного вопроса можно оставить один Perl-скрипт непрерывно работающим в течение сеанса и генерирующий некоторые ответы - а второй исключительно для приема данных от клиента - в таком случае при достаточно длительной обработке данных на сервере вся система будет работать быстрее так как непрерывное TCP-соединение работает быстрее
То есть Perl конечно может работать и сетевым сервером и клиентом но в случае с CGI уже Perl-скрипт не будет сервером а будет лишь программой контролирующей HTTP-вывод - а в случае NPH-скриптов еще и HTTP-заголовки ответа - но получить несколько GET/POST запросов от Apache в пределах одной инстанции он уже не может
Если вам нужен двухсторонний обмен то приется писать daemon на Perl - при этом написание daemon-ов на нем гораздо лучше и удобнее Кстати данная идея реализована в библиотеке Multiplexor - его вы можете посмотреть здесь http://dklab[dot]ru/lib/dklab_multiplexor/ и более новая версия здесь http://dklab[dot]ru/lib/dklab_realplexor/ - но как вы можете заметить чистого сервера Apache тут уже нету потому что стандартный CGI-интерфейс не поддерживает двухсторонник непрерывные соединения с точки зрения CGI-скрипта - хотя и при этом ничто не мешает использовать сессии (В том смысле как в PHP Улыбка
voltag пишет:
Есть ли кешь байт кода перла
В смысле можно ли скомпилировать perl-программу в байт-код чтобы она работала быстрее - это можно сделать и с помощью модуля B::Bytecode а можно с помощью IndigoStar Perl2exe можно создавать исполняемые файлы и для windows и для linux
Но как заявляют разработчики некомпилированные Perl-скрипты работают не медленее из нескомпилированных аналогов Улыбка


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
voltag
Отправлено: 16 Февраля, 2010 - 16:36:57
Post Id


Новичок


Покинул форум
Сообщений всего: 39
Дата рег-ции: Янв. 2010  


Помог: 1 раз(а)




JustUserR спасибо за ответы

До последующих вопросов мне надо всё переварить как следует и выкроить время на тестовые программки
 
 Top
JustUserR Модератор
Отправлено: 16 Февраля, 2010 - 18:32:37
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




voltag пишет:
JustUserR спасибо за ответы
До последующих вопросов мне надо всё переварить как следует и выкроить время на тестовые программки
Пожалуйста! Если вы реализуете тестовые варианты программ то выложите их пожалуйста здесь ибо пригодятся для учебника - а если будут какие вопросы то обязательно спрашивайте я постараюсь ответить и помочь в написании конкретных программ


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы по Perl/Python/.NET »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB