The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Выполнение JavaScript кода внутри PHP скриптов

10.06.2009 16:30

В статье "Using JavaScript in PHP with PECL and SpiderMonkey" рассказано о возможности выполнения JavaScript кода внутри PHP скриптов на сервере, через подключение PHP расширения с реализацией JavaScript движка Mozilla SpiderMonkey. На Perl подобная функциональность достигается использованием модуля JavaScript::SpiderMonkey.

  1. Главная ссылка к новости (http://devzone.zend.com/articl...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/22101-php
Ключевые слова: php, javascript, web
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 17:20, 10/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    какой в этом смысл?
     
     
  • 2.12, Гость_0 (?), 21:14, 10/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >какой в этом смысл?

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

    или например общая и для сервера и для клиента библиотека - меньше кода проще поддержка

     
     
  • 3.15, аноним (?), 22:00, 10/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >допустим купили вы разработчика java script

    вы сами понимаете, что это звучит как "директор по швабре"

    >или например общая и для сервера и для клиента библиотека - меньше кода проще поддержка

    меньше эффективность

     
     
  • 4.18, Аноним (-), 05:19, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > меньше эффективность

    смешно, мне как минимум не придётся платить каждый месяц зарплату лишнему ПХП кодеру :)

     
     
  • 5.20, User294 (ok), 13:00, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >смешно, мне как минимум не придётся платить каждый месяц зарплату лишнему ПХП
    >кодеру :)

    Ага, вы б еще название конторы озвучили?Чтоб знать от кого стоит держаться подальше.

    А то мало ли, вдруг вы там дворника ненароком купили и вам влом платить лишнему php-кодеру.

    ЗЫ пример из области "и жнец и швец и на дуде игрец" :D

     
  • 5.28, Guest (??), 20:31, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >смешно, мне как минимум не придётся платить каждый месяц зарплату лишнему ПХП
    >кодеру :)

    Т.е. для вас это единственное мерило всего? Класс.
    +1 к реквесту названия конторы.

     

  • 1.7, ffsdmad (?), 18:32, 10/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    а смысл по-моему очень простой
    с появление JS разработчики разгрузили свои сервера за счёт клиентов
    потом понаписали новых браузеров, разных JS библиотект и теперь у пехапешников возникла мысль, а почему разгрузить клиенские машины за счёт серверов
    следующим маразматическим шагом будет вынесение серверов на сторону клиентов или перезд клиентов на сервера
     
     
  • 2.8, croster (ok), 18:40, 10/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >переезд клиентов на сервера

    Это вряд ли
    >вынесение серверов на сторону клиентов

    Ну если нагрузка а локальный сервер будет небольшой, то почему бы и нет. Например, расширение google gears предоставляет возможность доступа к локальной БД SQLite - чем Вам не сервер БД?
    Что же касается серверного javascipt, то можно использовать Jaxer:
    http://www.aptana.com/jaxer
    Насколько мне известно, там все пишется на javascipt, при этом разработчик может выбирать, где исполнять код - на сервере или клиенте.

     
     
  • 3.10, аноним (?), 20:02, 10/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Что же касается серверного javascript, то можно использовать Jaxer

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

     
     
  • 4.11, croster (ok), 20:55, 10/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >верифицирует пользовательский ввод

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

     
     
  • 5.14, аноним (?), 21:58, 10/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Проверять ввод пользователя можно на сервере, а не на клиенте.

    траффик, латентность, нагрузка
    и вообще глупо

     
     
  • 6.16, Alexey (??), 00:02, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Вот приблизительно так и получаются различные виды sql-injection
     
     
  • 7.17, аноним (?), 00:29, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Вот приблизительно так и получаются различные виды sql-injection

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

     
  • 3.21, User294 (ok), 13:02, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >SQLite - чем Вам не сервер БД?

    Если sqlite - сервер БД, тогда glibc - стопудово "сервер приложений", как минимум  8[ ]

     
  • 2.9, аноним (?), 19:22, 10/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > следующим маразматическим шагом будет вынесение серверов на сторону клиентов или перезд клиентов на сервера

    Точно :) Чем бы дитё не тешилось...

     
  • 2.24, User294 (ok), 13:06, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >следующим маразматическим шагом будет вынесение серверов на сторону клиентов
    >или перезд клиентов на сервера

    ...но именно так и появились распределенные P2P сети без серверов.Где есть только клиенты.И ничего кроме клиентов.

     

  • 1.13, XoRe (ok), 21:24, 10/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Что только не сделают, лишь бы не изучать более глубоко тот же PHP?
    О С/С++ я вообще молчу)

    Ещё можно поддержку VisualBasic и ActiveX сделать.
    А чо, есть же такие скрипты у клиента в браузере)

    А вообще есть такая штука, как серверная Java.
    Есть давно.
    Очень любима в корпоративном секторе.
    Может вместо JavaScript начать изучать её?

     
     
  • 2.22, User294 (ok), 13:03, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Ещё можно поддержку VisualBasic и ActiveX сделать.

    Лучше брейнфак сразу, все-равно к чему-то этакому стремление у всех програмеров есть :)

     
  • 2.25, terr0rist (??), 13:24, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Всё смешали в одну кучу.

    На C/C++ едва ли в настоящее время кто-то разрабатывает сайты. Кроме разве что спецзадач.
    VisualBasic - это проприетарная МС технология, которая нигде кроме продуктов МС не используется.
    АктивХ - это не язык программирования, а ЯП-независимый АПИ доступа к неким ресурсам МС.
    "Серверная" Ява - это не альтернатива Яваскрипту, а опять же технология, призванная решать вполне конкретный, довольно узкий круг задач. Никто в здравом уме не будет писать например сайт-визитку на J2EE/EJB.
    И к тому же, яваскрипт - это скриптовый ЯП, используемый в основном в разработке веб-сайтов и работающий во всех основных браузерах. всё остальное, включая пхп - таковым не является.
    ПХП как ЯП - убог и отвратен. Да, полезные фишки типа расширений, которые правда далеко не на всех хостингах установлены, снискали ему популярность. Но его идиотская система разработки (АПИ в каждой версии отличается от предыдущей), отсутствие стандарта, отсутствие поддержки юникода, бредовые концепции глобальных переменных, издыхающие зачатки ООП, дебильный механизм warnings и notices вместо нормальной системы обработки ошибок, и прочие следствия того, что это "Personal Home Pages" - всё это убивает все плюсы напрочь.
    Яваскрипт - это чётко стандартизированный ЯП, со вменяемым АПИ, с удачной (для скриптового языка) структурой типов и объектов, широко используемый. И я лично всеми руками за то, чтобы сделать его универсальным языком для Веб. А пхп пусть канет в лету, куда ему дорога.

     
     
  • 3.26, аноним (?), 13:46, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >На C/C++ едва ли в настоящее время кто-то разрабатывает сайты.

    в то же время

    >ПХП как ЯП - убог и отвратен.
    >его идиотская система разработки (АПИ в каждой версии отличается от предыдущей)

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

    >отсутствие стандарта, отсутствие поддержки юникода, бредовые концепции глобальных переменных
    >прочие следствия того, что это "Personal Home Pages"

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

     
  • 3.27, Geol (??), 15:02, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >На C/C++ едва ли в настоящее время кто-то разрабатывает сайты. Кроме разве
    >что спецзадач.

    Различные сервисы и службы на крупных порталов - сплош и рядом.

    >Но его идиотская система разработки (АПИ в каждой версии отличается от
    >предыдущей),

    Поясните мысль. Вы про Zend Engine  API? И когда он последний раз менялся?

    >отсутствие стандарта,

    Это про что?
    >отсутствие поддержки юникода,

    Ой http://ru.php.net/manual/en/ref.unicode.php

    >бредовые концепции глобальных переменных,

    Ой http://ru.php.net/manual/en/security.globals.php

    >издыхающие
    >зачатки ООП,

    http://ru.php.net/manual/en/language.oop5.php
    Опять в лужу, да что за нафиг!

    >дебильный механизм warnings и notices

    Механизм предупреждений и механизм обработки ошибок вещи разные и существуют для разных целей. Кстати

    >вместо нормальной системы обработки
    >ошибок,

    http://ru.php.net/manual/en/book.errorfunc.php

     
  • 3.30, аноним (?), 20:40, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Яваскрипт - это чётко стандартизированный ЯП, со вменяемым АПИ, с удачной (для
    >скриптового языка) структурой типов и объектов, широко используемый. И я лично
    >всеми руками за то, чтобы сделать его универсальным языком для Веб.

    О да, стандартизированный. Там в самом стандарте в каждой строчке исключения, а если учитывать еще и микрософтовскую реализацию...
    Да и сам язык убог до невозможности - после определения 'слабо типизированный' его можно сразу похоронить. Вспомните правила преобразования типов, неявное объявление переменных, объекты обертки. Это нельзя языком назвать, тут даже PHP на порядки лучше. Хотя я за то, чтобы их скрестить и похоронить вместе, да.

     
     
  • 4.38, Jmunb (?), 19:34, 04/10/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >>Яваскрипт - это чётко стандартизированный ЯП, со вменяемым АПИ, с удачной (для
    >>скриптового языка) структурой типов и объектов, широко используемый. И я лично
    >>всеми руками за то, чтобы сделать его универсальным языком для Веб.
    > О да, стандартизированный. Там в самом стандарте в каждой строчке исключения, а
    > если учитывать еще и микрософтовскую реализацию...
    > Да и сам язык убог до невозможности - после определения 'слабо типизированный'
    > его можно сразу похоронить. Вспомните правила преобразования типов, неявное объявление
    > переменных, объекты обертки. Это нельзя языком назвать, тут даже PHP на
    > порядки лучше. Хотя я за то, чтобы их скрестить и похоронить
    > вместе, да.

    Ну если вы утверждаете что javascript реализовал микрософт то разговор сразу же можно прекращать. javascript разработан компанией netscape и Sun Microsystems. И только потом микрософт выпустил свой аналог jscript который поддерживается наверное только в ie


     
  • 3.35, XoRe (ok), 10:47, 13/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Если лично вам не нравится php, то это дело личное.
    Но и тут сообществу есть, что вам предложить.
    Perl/Python/Ruby и т.д. выбирайте тот язык, который вам нравится.

    >И к тому же, яваскрипт - это скриптовый ЯП, используемый в основном
    >в разработке веб-сайтов и работающий во всех основных браузерах. всё остальное,
    >включая пхп - таковым не является.

    Это не верно.
    Все-таки стоит разделить то, что выполняется на сервере и то, что выполняется в браузере.
    JavaScript не используется в разработке сайта.
    Он используется для увеличения интерактивности уже сгенерированной и отданной юзеру странички.
    И то - выполняясь на его стороне.
    Если я открою сайт в lynx/links/telnet, JavaScript не запустится, ни на сервере, ни у меня.

    Ну а то, что в браузерах сейчас JavaScript - единственное, что есть у всех - это да.
    Но он немного тормозноватый.
    Если JavaScript тормозит на современной машине, это странно.
    Google отчасти потому и выпустила Chrome - озаботилась скоростью JavaScript.
    И сделала движения в ту сторону, чтобы народ продолжал пользоваться JavaScript и поменьше хотел изобретать велосипеды.

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

     

  • 1.19, kvasdopil (?), 10:09, 11/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    По поводу применения:
    Первое, что приходит на ум: возможность создания упрощённого скриптового языка внутри сложного пхп-фреймфорка - например для того, чтобы юзер мог какую-то бизнес-логику сам задавать. Ну или для того чтобы к системе контроллерров был доступ извне - из скрипта шелловского какого-нибудь и т.д.

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

     
     
  • 2.23, User294 (ok), 13:05, 11/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >пхп-фреймфорка - например для того, чтобы юзер мог какую-то бизнес-логику сам
    >задавать.

    Да, точно, сделайте по такому принципу платежную систему :).Я чесслово логику задам.В свою пользу правда, но это уже детали :)

     
  • 2.34, XoRe (ok), 10:34, 13/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >По поводу применения:
    >Первое, что приходит на ум: возможность создания упрощённого скриптового языка внутри сложного
    >пхп-фреймфорка - например для того, чтобы юзер мог какую-то бизнес-логику сам
    >задавать. Ну или для того чтобы к системе контроллерров был доступ
    >извне - из скрипта шелловского какого-нибудь и т.д.
    >
    >И главное отличие от пхп здесь в возможности создания изолированного окружения пользовательского
    >кода - у яваскрипта не будут доступны потенциально опасные пхпшные функции,
    >не будет доступа к глобальным переменным и т.д.

    Ну так, в Java тоже можно сделать изолированное окружение.
    И возможностей у него больше.
    И программистов под него больше.
    И его реалзации уже есть везде, где только можно.

     

  • 1.31, angra (ok), 08:05, 12/06/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Любопытно, никто не подумал про самое очевидное применение: исполнять внешний javascript код. Зачастую разбор внешнего js кода и написание его аналога на внутреннем языке слишком трудоемкая задача. Другое дело, что грабберы(а именно в им такое нужно) все-таки лучше писать на perl, а не на пыхе, но если так рассуждать, то пых вообще окажется ненужным :)
     
     
  • 2.32, аноним (?), 14:18, 12/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Любопытно, никто не подумал про самое очевидное применение: исполнять внешний javascript код.

    подумали. но не написали, потому что подумали и про другое: почти всегда js жестко привязан к конкретному документу, разбор и исполнение вне контекста не имеет смысла. вот если бы рулить всем движком, а не только огрызком...

     
  • 2.33, XoRe (ok), 10:32, 13/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Любопытно, никто не подумал про самое очевидное применение: исполнять внешний javascript код.
    >Зачастую разбор внешнего js кода и написание его аналога на внутреннем
    >языке слишком трудоемкая задача. Другое дело, что грабберы(а именно в им
    >такое нужно) все-таки лучше писать на perl, а не на пыхе,
    >но если так рассуждать, то пых вообще окажется ненужным :)

    Так может тогда выполнять Java код?
    Они распространеннее, и может выполняться в своей виртуальной машине.

     
     
  • 3.36, angra (ok), 07:07, 14/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    С каких пор на сайтах java более распространена чем js? Если вдруг не поняли про что я, то поясню. Скрипт на php/perl/python/итд должен получить некие данные с вебсайта, который не контролируем. Если это на прямую доступная простая страничка на html, пусть даже сгенерированная динамически жабой/пыхом/итд, то это все в легкую решается регексами. Однако если сайт имеет сложную структуру и активно юзает js, то может уйти много дней, чтобы найти способ добраться до нужной странички и вытащить инфу. Возможность исполнения js убирает значительную часть времени, затрачиваемого на его разборку. Иногда это может экономить больше 90% тотального времени на задачу.
     
     
  • 4.37, zoonman (ok), 11:04, 14/06/2009 [^] [^^] [^^^] [ответить]  
  • +/
    > Скрипт на php/perl/python/итд должен
    >получить некие данные с вебсайта, который не контролируем.

    На вас в суд еще никто не подавал за нарушение авторских прав?
    Что-то мне подсказывает, что в первую очередь это расширение предназначено для выполнения сторонних ЖС и скрытого использования их функционала.
    Так же подобная вещь может пригодиться для автоматизированного профилирования множества разрозненных клиентских скриптов.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру