Гэр / Аватар / Үнэгүй PHP хөрвүүлэгч. Онлайн хөрвүүлэгчдийн сонголт: бид кодыг шууд хөтөч дээр ажиллуулж, шалгадаг Хэзээ эмхэтгэх талаар бодох хэрэгтэй

Үнэгүй PHP хөрвүүлэгч. Онлайн хөрвүүлэгчдийн сонголт: бид кодыг шууд хөтөч дээр ажиллуулж, шалгадаг Хэзээ эмхэтгэх талаар бодох хэрэгтэй

Тайлбарлах, хөрвүүлэх гэсэн хоёр төрлийн програмчлалын хэл байдаг. PHP ямар хэл вэ? Энэ асуултад хариулахын тулд бид нэр томъёог ойлгох хэрэгтэй.

Нэг програмчлалын хэлээр бичсэн кодыг нөгөө хэл рүү хөрвүүлдэг программыг орчуулагч гэнэ. Хөрвүүлэгч нь бас орчуулагч юм. Энэ нь өндөр түвшний хэлээр бичсэн кодыг машины код болгон хөрвүүлдэг. Эмхэтгэх процесс нь хөрвүүлэгчгүйгээр ажиллах боломжтой хоёртын файлыг үүсгэдэг.

Орчуулагч бол шал өөр ангилал юм. Орчуулагч кодыг орчуулдаггүй, харин гүйцэтгэдэг. Орчуулагч програмын кодыг шинжилж, мөр бүрийг гүйцэтгэдэг. Ийм кодыг ажиллуулах бүртээ орчуулагч ашиглах ёстой.

Гүйцэтгэлийн хувьд орчуулагч нь хөрвүүлэгчээс хамаагүй доогуур байдаг, учир нь хоёртын код нь илүү хурдан ажилладаг. Гэхдээ орчуулагчид програмыг гүйцэтгэх явцад бүрэн хянах боломжийг олгодог.

РНР-ийн хувьд хөрвүүлэгч ч биш, орчуулагч ч биш. РНР бол хөрвүүлэгч болон орчуулагч хоёрын хоорондох холбоос юм. Үүнийг ойлгож, PHP кодыг хэрхэн боловсруулдагийг харцгаая.

Зургийг харцгаая:

PHP нь орчуулагч ба орчуулагч гэсэн бараг бие даасан хоёр блокоос бүрддэг болохыг бид харж байна. Та яагаад үүнийг хийх хэрэгтэй болсон бэ? Мэдээжийн хэрэг, хурдны шалтгаанаар.

PHP оролт нь скрипт юм. Энэ нь синтаксийг шалгаж, тусгай байт код (дотоод дүрслэл) болгон хөрвүүлдэг (орчуулдаг). Дараа нь PHP нь байт кодыг гүйцэтгэдэг (програмын код нь өөрөө биш), гэхдээ гүйцэтгэх боломжтой файл үүсгэдэггүй.

Байткод нь энгийн програмын кодоос хамаагүй авсаархан тул тайлбарлахад хялбар (мөн хурдан) юм. Өөрийгөө шүүж үзээрэй: орчуулгын үе шатанд задлан шинжлэх нь зөвхөн нэг удаа хийгддэг бөгөөд "хагас боловсруулсан бүтээгдэхүүн" - байт кодыг гүйцэтгэдэг бөгөөд энэ нь эдгээр зорилгод илүү тохиромжтой. Тиймээс РНР нь хөрвүүлэгч гэхээсээ илүү орчуулагч юм. Энэхүү "давхар ажил" нь дараахь зорилгоор зайлшгүй шаардлагатай байв.

Гогцоог анхаарч үзээрэй:

Учир нь (i=0;i<10; i++) { Operator_1; Operator_2; Operator_3; ............ Operator_99; Operator_100; }

Энэ мөчлөг нь 10 удаа "эргэх" болно. Эдгээр арван дамжуулалт бүрт орчуулагч заавал байх ёстой 100 кодын мөрүүд. Мөн 10*100 = 1000 мөр кодыг задлан шинжилж гүйцэтгэх хэрэгтэй! Хэрэв та бүх гогцоог нэг удаа байт код руу хөрвүүлбэл 10 дахин бага дүн шинжилгээ хийх шаардлагатай болно! Энэ нь скриптүүд 10 дахин хурдан ажиллана гэсэн үг юм!

Энэ нь PHP гэдэг нь харагдаж байна.

РНР-ийн ажлын гол үе шат бол програмын дотоод дүрслэл, түүний гүйцэтгэлийг тайлбарлах явдал юм. Энэ нь ноцтой хувилбаруудад хамгийн их цаг зарцуулдаг үе шат юм. Гэсэн хэдий ч удаашрал нь тийм ч чухал биш юм.

PHP 3-р хувилбар нь "цэвэр" орчуулагч байсан бөгөөд PHP 4-р хувилбар (болон PHP5) нь орчуулагч учраас PHP 4-ийн скриптүүд илүү хурдан ажиллаж эхэлсэн гэдгийг санах нь зүйтэй.

Бараг үргэлж хөрвүүлэгч гэж нэрлэгддэг Perl хэл нь яг ижил аргаар ажилладаг - энэ нь програмын текстийг дотоод дүрслэл болгон хөрвүүлдэг бөгөөд дараа нь гүйцэтгэлийн явцад үүссэн кодыг ашигладаг. Тиймээс бид PHP хувилбар 4 нь Perl-тэй яг адилхан хөрвүүлэгч гэж хэлж болно.

Тиймээс бид PHP бол орчуулгын урсгалыг оновчтой болгодог орчуулгын блоктой орчуулагч юм гэж дүгнэхээс өөр аргагүй боллоо.

Орчуулагч (тиймээс PHP) ашиглах нь маргаангүй давуу талуудтай:

  • Хуваарилагдсан санах ойг чөлөөлөх талаар санаа зовох шаардлагагүй, файлтай ажиллаж дуусахад файлуудыг хаах шаардлагагүй - програм нь түүний хяналтан дор ажилладаг тул орчуулагч бүх ердийн ажлыг хийх болно;
  • Хувьсагчийн төрлүүдийн талаар бодох шаардлагагүй бөгөөд хувьсагчийг анхны хэрэглээнээс нь өмнө зарлах шаардлагагүй;
  • Хөтөлбөрийг дибаг хийх, алдааг илрүүлэх нь ихээхэн хялбаршуулсан - орчуулагч энэ үйл явцыг бүрэн хянах боломжтой;
  • Вэб програмын хувьд орчуулагч нь маш чухал давуу талтай байдаг - хэрэв програм зөв ажиллахгүй бол сервер "хөлдөх" аюул байхгүй.

Бусад давуу талууд бас бий. Ерөнхийдөө орчуулагч ашиглах нь скриптүүдэд вэб хэрэглэгчдийн хүлээж буй хүчийг өгч чадна.

PHP-ийн гүйцэтгэлийн торгууль нь том, нарийн төвөгтэй гогцоо, олон тооны мөрийг боловсруулах гэх мэт тохиолдолд мэдэгдэхүйц юм. Гэхдээ энэ нь PHP-ийн цорын ганц дутагдалтай тал бөгөөд илүү хүчирхэг процессорууд гарах тусам улам бүр бага харагдах болно гэдгийг анхаарна уу. , ингэснээр эцэст нь , бүрмөсөн алга болно.

<<< Назад
(PHP5-д ямар шинэ зүйл байна вэ?)
Агуулга Урагшаа >>>
(PHP 5.3 руу шилжих)

Хэрэв танд өөр асуулт байвал эсвэл тодорхойгүй зүйл байвал манай сайтад тавтай морилно уу

PHP-г эх кодоос эмхэтгэх нь ихэвчлэн Unix-тэй төстэй системүүд дээр хийгддэг. Windows үйлдлийн системтэй орчинд ажилладаг хүмүүс хоёртын багцаас PHP-г татан авч суулгах магадлалтай. Урьдчилан эмхэтгэсэн шийдлийг ашиглах нь илүү хялбар гэдэгтэй би санал нийлэхгүй байгаа ч Unix систем дээр ч гэсэн эх сурвалжаас хоёртын файлыг хөрвүүлэх нь зарим давуу талтай байдаг. Бүгдээрээ:

  • Та эмхэтгэлийн явцад эцсийн бүтээгдэхүүнийг нарийн тохируулах чадвартай. Магадгүй та үүнийг гадаад номын сан болгон ачаалахын оронд хоёртын файл руу шууд хөрвүүлдэг тодорхой өргөтгөлийг хүсч байгаа байх. Эсвэл та анхдагчаар ихэвчлэн байдаг зүйлийг унтраахыг хүсч магадгүй юм.
  • Шаардлагатай бол эмхэтгэлийн явцад та тодорхой орчны гүйцэтгэлийг сайжруулж болох заль мэхийг хийж болно (мэдээжийн хэрэг, энэ тохиолдолд та юу хийж байгаагаа мэдэж байгаа гэж тооцдог. Та энэ нийтлэлийг уншихгүй байх байсан !).
  • Хэрэв хөрвүүлсэн хоёртын файлууд нь туслах программ хангамж болон номын сангийн хуучин хувилбарууд дээр суурилагдсан бөгөөд та одоо шинэ систем дээр ажиллаж байгаа бол эмхэтгэх нь бүх зүйлийг хэвийн болгох цорын ганц арга зам байж болох юм.

Анхааруулга:эмхэтгэл нь урам хугарах болно, ялангуяа Windows дээр! Та бүтээх орчныг зөв тохируулж, хөрвүүлэгч болон бусад бүтээх хэрэгслийг хэрхэн зөв ашиглаж сурах, номын сангийн хамаарлыг хангах ёстой. Энэ нийтлэл нь эдгээр олон саад бэрхшээлийг даван туулах анхны алхам болно гэж найдаж байна.

Барилгын орчныг тохируулах

PHP нь C хэл дээр бичигдсэн тул эх кодоос PHP бүтээх гэж байгаа бол C хөрвүүлэгч шаардлагатай. C++ бол С хэлний супер багц учраас сайн C++ хөрвүүлэгч нь Си кодыг эмхэтгэх чадвартай байх ёстой бөгөөд энэ нь үргэлж тийм байдаггүй. Windows-ийн хувьд Visual Microsoft, C + + Express (энэ нь дараа нь VC + + гэж нэрлэгдэх болно) Microsoft-ын вэбсайт дээр чөлөөтэй байдаг. 2010 оны хэвлэлийг ашигласан.

Хөрвүүлэгчийн хувилбарыг сонгохдоо PHP-г хэрхэн ажиллуулахаа санах хэрэгтэй. Хэрэв та албан ёсоор эмхэтгэсэн Apache хоёртын файлуудын mod_php-тэй ажиллах шаардлагатай бол Visual Studio 6-г ашиглан PHP-г хөрвүүлээрэй, учир нь энэ нь Apache эмхэтгэлийн хувилбар юм. Модуль нь Apache-тэй ижил ажиллах үеийн номын санд зориулагдсан байх ёстой, энэ тохиолдолд msvcrt.dll. Хэрэв та Apache-г эх сурвалжаас бүтээж байгаа бол эсвэл PHP-г FastCGI эсвэл CLI хэлбэрээр ажиллуулах гэж байгаа бол энэ нь асуудал биш бөгөөд 2010 он сайн ажиллах болно.

Та мөн Windows Development Kit (SDK) програм хангамжийг суулгах ёстой. SDK нь Windows платформын чухал толгой файлуудыг бидэнд өгдөг бөгөөд бид амжилттай эмхэтгэх шаардлагатай болно. Үүнийг мөн 7.1 хувилбарыг ашигласан.

Хөрвүүлэгч, дараа нь SDK суулгана уу. Би суулгацын талаар ярихгүй, учир нь хоёуланд нь бүх процессыг удирдан чиглүүлэх график суулгах шидтэн байдаг.

Хэрэв танд хөрвүүлэгч ажиллаж байгаа бол Windows.php.net сайтаас Хоёртын хэрэгслүүд болон мэдэгдэж буй багцуудыг татаж аваарай. Хоёртын хэрэгслүүдийн багц (би 20110915 архивыг ашиглаж байна) нь re2c, bison зэрэг хөгжүүлэлтийн хэрэгслүүд болон PHP-г бүтээхэд хэрэгтэй зарим нэмэлт командуудыг агуулдаг. Мэдэгдэж буй багц (би энэ нь миний эмхэтгэх PHP хувилбартай таарч байгаа тул 5.4 архивыг ашиглаж байна) шаардлагатай хамгийн бага толгой болон хараат сангуудыг агуулна, жишээ нь zlib.h.

Та Windows.php.net сайтаас PHP эх сурвалжийг татаж авахыг хүсч байгаа нь ойлгомжтой. Үүнийг бичиж байх үед PHP-ийн одоогийн хувилбар нь 5.4.6 тул та жишээн дээр харагдах хувилбарын дугаар юм.

Системийнхээ бусад хэсэгт нөлөөлөхгүйн тулд эх кодыг задалж, эмхэтгэх боломжтой ажлын талбар үүсгэх нь зүйтэй. Таны ажлын лавлахаар үйлчлэх C:\PHP-Dev хавтас үүсгээд хоёртын архив болон хэрэглүүрийг түүн рүү гаргаж авна уу.

Дараа нь архивын агуулгыг задлах, PHP эх сурвалжийг C:\PHP-Dev-д одоо та эх хавтсанд php5.4 байгаа бөгөөд дараа нь түүний deps архивыг deps sibling хавтас руу задлаарай. Лавлах бүтэц нь иймэрхүү харагдах ёстой:

SDK-тай суулгасан Windows SDK командын мөрийг нээгээд (Start => Microsoft Windows SDK => Windows SDK Command Prompt) дараах тушаалуудыг ажиллуулна уу:

Setenv /release /xp /x86 cd C:\PHP-Dev bin\phpsdk_setvars.bat

SDK консолын командын мөрийг энгийн cmd.exe консолоос өмнө ашиглах нь зүйтэй, учир нь энэ нь эх кодын эмхэтгэлд тусгайлан зориулсан олон орчны хувьсагчдыг тохируулдаг. Дараа нь командын эмхэтгэлийг энэ консол дээр хийх ёстой.

setenv нь хүрээлэн буй орчинд зориулж зарим бүтээх шинж чанарыг тохируулдаг бөгөөд энэ тохиолдолд зорилтот орчин нь угсралтын Windows XP 32-бит хувилбар юм. Хэрэв та адал явдал хайж байгаа бол /x64-ийг ашиглан бүтээх боломжтой. /Vista гэх мэт Windows-ийн өөр өөр хувилбаруудыг тодорхойлох нь скрипт дээрх зарим хачирхалтай тодорхойлолтуудаас болж гаралтын асуудалтай байх магадлалтай (PHP нь XP-тэй нийцтэй байхыг хүсдэг). Хэрэв та юу хийж байгаагаа сайн мэдэхгүй л бол дээр дурдсан миний санал болгосон утгыг баримтлах нь хамгийн найдвартай арга юм.

phpsdk_setvars.bat скрипт нь зарим нэмэлт орчны хувьсагчдад ханддаг бөгөөд бүтээх процесс нь хоёртын хэрэгслийг олох боломжтой болсон.

Эдгээр бүх хувьсагчийн тохиргоо нь зөвхөн консол дахь түр зуурын сессүүд гэдгийг санаарай. Хэрэв та дараа нь эмхэтгэхийн тулд бүх зүйлийг хурдан хаавал командыг дахин ажиллуулах шаардлагатай бөгөөд хэрэв тэгэхгүй бол та дараахтай адил алдаа гарах бөгөөд дараа нь configure-г ажиллуулах үед үргэлжлүүлэх боломжгүй болно.

bison.exe файлыг шалгаж байна ... АЛДАА: бизон шаардлагатай

Барилгын зөв орчин, шаардлагатай эх сурвалж, аливаа хамаарал байгаа эсэхийг шалгах нь үйл явцын хамгийн хэцүү хэсэг юм. Тэгэхээр одоо таны орчин эх код болон хамааралтай байгаа тул эмхэтгэх цаг боллоо!

PHP эмхэтгэж байна

SDK командын мөрөнд PHP эх хавтас руу очоод buildconf-г ажиллуулна уу. Энэ команд нь эмхэтгэлийн үйл явцыг хянахын тулд Makefile-ээр үүсгэгдэх тохиргооны файлуудыг үүсгэх үүрэгтэй.

buildconf-г дуусгасны дараа (энэ нь ердөө секунд л болно) configure --help - ажиллуулж, ямар функцийг идэвхжүүлэх/идэвхгүй болгох талаар тусламжийг шалгаад хүссэн сонголтоороо configure-г дахин ажиллуулна уу. Шаардлагатай хамаарал байхгүй бол танд анхааруулах тул шилжихээсээ өмнө гаралтыг шалгах нь зүйтэй. Хэрэв ийм зүйл тохиолдвол та хамаарлыг суулгаж, тохиргоог дахин ажиллуулж болно, эсвэл шаардлагатай өргөтгөлүүдийг идэвхгүй болгохын тулд дуудлагыг тохируулж болно.

Эцэст нь хөрвүүлж эхлэхийн тулд NMAKE-г ажиллуул.

Cd C:\PHP-Dev\php5.4 buildconf тохируулах nmake nmake тест

Хэрэв ямар нэгэн тохиргоо эсвэл NMAKE бүтэлгүйтвэл асуудал нь хоёрын нэг юм: Нэгдүгээрт, орчин зөв тохируулагдаагүй, хоёрдугаарт, та гадаад номын сангаас хамаарах функцийг идэвхжүүлсэн бөгөөд таны системд сангууд суулгаагүй байна. Дээрх зааврын дагуу орчинг үүсгэсэн эсэх, мөн үндсэн тохиргооны тохиргоонд шаардлагатай нэмэлт сангууд тохируулагдсан эсэхийг давхар шалгаарай.

Эмхэтгэх үйл явцын эхний NMAKE дууссаны дараа та Release_TS хавтас дотроос цоо шинэ PHP файлуудаа олох болно. NMAKE тест нь бүх зүйл хэвийн ажиллаж байгаа эсэхийг баталгаажуулахын тулд давхар багтаамжийн алдааны шинэ туршилтуудыг явуулдаг. NMAKE тестийн үр дүнг PHP-г сайжруулахын тулд тэднээс хамааралтай QA багт илгээдэг тул ажиллахад хэдэн минут зарцуулагдаж магадгүй, энэ нь маш том асуудал юм.

Энэ үед та ZIP архив болон хоёртын файлуудыг үүсгэх NMAKE нэмэлт програмыг ажиллуулах нэмэлт алхамыг ашиглах боломжтой.

Эмхэтгэлийн өргөтгөлүүд

PHP өргөтгөлүүдийг эмхэтгэх хоёр арга байдаг: статик болон динамик. Статик байдлаар хөрвүүлсэн өргөтгөлийг PHP хоёртын файл болгон хөрвүүлдэг бол динамикаар хөрвүүлсэн өргөтгөл нь дараа нь php.ini файлаар ачаалагдах тусдаа DLL юм. Өргөтгөлүүдийг ихэвчлэн DLL хэлбэрээр хөрвүүлдэг боловч статик эмхэтгэлд зарим давуу талууд байдаг бөгөөд эцсийн дүндээ энэ нь таны хэрэгцээнээс хамаарна.

Windows дээр PHP өргөтгөлүүдийг эмхэтгэхийн тулд эх кодын өргөтгөлийн хавтсыг өөрийн PHP эх директорийн ext хавтас руу задлана уу. Дараа нь buildconf --force-г ажиллуулж, өргөтгөлийг идэвхжүүлэхийн тулд тохирох сонголтуудыг ашиглан PHP-г дахин хөрвүүлэн скриптийг дахин тохируулна уу.

Жишээ болгон AOP өргөтгөлийг статик байдлаар хөрвүүлье. PECL-ээс эх кодыг татаж аваад хавтас руу задлаарай, ext. Дараа нь дараах алхмуудыг дагана уу:

Cd C:\PHP-Dev\php5.4 buildconf --force configure --enable-aop nmake

--force, buildconf сонголт нь тохиргооны скриптийг сэргээхэд хүргэдэг. Дараа нь configure --help програмыг ажиллуулаад гаралт дээрх шинэ өргөтгөлийг идэвхжүүлэх сонголтыг харах болно. Энэ тохиолдолд энэ нь --enable-AOP юм.

Nmake дууссаны дараа та AOP-тэй шинээр баригдсан PHP хоёртын файлтай болно.

Өргөтгөлүүд нь PHP дээр шатаасан биш DLL хэлбэрээр байх болно, та дээрхтэй ижил алхмуудыг дагана уу, гэхдээ тохиргооны утга нь сонголт хийх боломжийг олгодог тул "хуваалцсан" гэж зааж өгнө.

Buildconf --force configure --enable-aop=shared

Үүний үр дүнд эмхэтгэл дуусахад DLL нь PHP хоёртын файлын хамт Release_TS хавтсанд байх бөгөөд энэ тохиолдолд нэр нь php_aop.dll болно.

P.S.

Windows дээр хөрвүүлэх нь жаахан төвөгтэй хэвээр байна, ялангуяа өргөтгөлүүдийн тухайд. Эх кодыг эмхэтгэх чадвартай байх нь ялангуяа дараа нь PHP-г өөрчлөхийг хүсч байвал сайн ур чадвар юм.

Нийтлэлийг сайтын хамт олон танд зориулж бэлтгэсэн
Эх нийтлэл:
Орчуулсан: Виктор Клим

Алексей Романенко:Намайг Алексей Романенко гэдэг, би РБК-д ажилладаг. Энэ илтгэлийн сэдэв нь бага зэрэг маргаантай байна. Бүх зүйл ингэж ажиллаж байгаа юм шиг байхад яагаад PHP скриптүүдийг эмхэтгэх ёстой гэж?

Магадгүй гол асуулт бол "Яагаад?" Ер нь ийм эмхэтгэл хэрэгтэй юу, шаардлагатай бол яагаад, ямар хэлбэрээр, хэнд хэрэгтэйг ойлгохыг хичээх нь энэхүү илтгэлийн зорилго юм.

PHP хөрвүүлэгч гэж юу вэ?

Нэгдүгээрт, PHP хөрвүүлэгч гэж юу болох талаар товч тойм. Энэ нь хэрхэн ажилладаг, юу болох, хэрхэн хурдасгах талаар танд хэлэх болно.

Эхний функциональ модуль нь SAPI (Server API) гэж нэрлэгддэг бөгөөд энэ нь янз бүрийн үйлчлүүлэгчдээс (Apache, зарим төрлийн CGI сервер (Common Gateway Interface) болон бусад) PHP-д хандах интерфейсээр хангадаг. Мөн SAPI embedded байдаг бөгөөд энэ нь танд PHP-г ямар ч програм руу оруулах боломжийг олгодог.

Хоёрдахь үндсэн хэсэг нь хүсэлтийг боловсруулж, сүлжээ, файлын системтэй ажиллах, скриптүүдийг өөрсдөө задлан шинжилдэг PHP Core юм.

Гурав дахь глобал хэсэг нь Zend Engine бөгөөд бидний скриптүүдийг зарим байт код болгон эмхэтгэж, түүнийг виртуал машин дээрээ ажиллуулж, санах ойн менежментийг зохицуулдаг (цогц хуваарилагчийг хэрэгжүүлдэг).

Хамгийн чухал бөгөөд хамгийн том хэсгүүдийн нэг бол PHP дээр бидний ашигладаг зүйлийн 99% -ийг хэрэгжүүлдэг Өргөтгөлийн модуль юм. Эдгээр нь зарим номын сангийн "боодол", функциональ байдал, ангиуд, суулгасан номын сан гэх мэт. Мөн бид өөрсдийн өргөтгөлүүдийг бичиж болно.

Скрипт өөрөө хэрхэн биелдэг вэ?

Эхлээд. Лексикийн шинжилгээ хийдэг - файлыг татаж авч, задлан шинжилж, энэ файлын багцын бүх тэмдэгтүүдийг тодорхой багц жетон болгон хөрвүүлдэг бөгөөд бид үүнтэй хамтран ажилладаг.

Шинжилгээний үе шат нь эдгээр жетонуудыг задлан шинжилдэг. Энэхүү дүн шинжилгээнд үндэслэн тодорхой дүрмийн бүтцийг эмхэтгэсэн бөгөөд үүний үндсэн дээр байт кодыг үүсгэнэ.

Төгсгөлд нь Zend Engine үүнийг гүйцэтгэдэг. Үр дүнг үйлчлүүлэгчид буцааж өгнө.

Бид өндөр ачааллын тухай ярьж байна. Хэрэв та ийм үйлдлийн хэв маягийг байнга давтвал бүх зүйл маш удаан ажиллах болно. Манай орчуулагч хэд хэдэн зуу, мянган хүсэлтийг нэгэн зэрэг хүлээн авах үед хурд нь огт байхгүй болно.

Гэхдээ шийдлүүд бий. Тэд удаан хугацааны туршид танигдсан.

Хэрхэн хурдатгалд хүрэх вэ?

Хамгийн энгийн, хямд, сайн туршсан шийдэл бол байт кодын кэш юм. Шинжилгээний үе шатыг давахын оронд бид зүгээр л байт кодыг кэшлэнэ. Үүнд зориулсан тусгай өргөтгөлүүд байдаг - тэдгээрийг PHP-тэй ажиллаж байсан хүн бүр сайн мэддэг - эдгээр нь APC, eAccelerator, Xcache гэх мэт. Zend Engine нь ердөө л байт кодыг гүйцэтгэдэг.

Хоёрдахь сонголт бол кодын профайл хийх, саад тотгорыг тодорхойлох явдал юм. Бид ямар нэг зүйлийг PHP өргөтгөл болгон дахин бичиж (энэ нь C/C++ хэл дээрх өргөтгөл байх болно), түүнийг хөрвүүлж, модуль болгон ашиглаж болно.

Гурав дахь сонголт нь илүү глобаль юм - PHP-ийн талаар мартаж, бүгдийг дахин бичээрэй. Ерөнхийдөө энэ сонголт нь амьдрах эрхтэй, гэхдээ PHP код хангалтгүй тохиолдолд л. Том, том төслүүдэд (эсвэл нэлээд удаан хугацаанд оршин тогтнож байсан) ихэнх нь ихэвчлэн хуримтлагддаг бөгөөд бүх зүйлийг дахин бичихэд удаан хугацаа шаардагдана. Бизнесийн шаардлага танд үүнийг хийхийг зөвшөөрөхгүй. Ерөнхийдөө PHP дээр ямар нэг зүйл бичих, тухайлбал, урд талын серверт зориулж бичихэд тийм ч их хугацаа шаардагдахгүй, учир нь энэ нь энгийн хэл юм. Энэ нь доод түвшний хэлээр хийхэд удаан хугацаа шаардагдах зүйлсийг хурдан хийх боломжийг танд олгоно.

Сүүлийн үед өргөн тархсан өөр нэг хувилбар байдаг бөгөөд энэ нь PHP-г хаа нэгтээ, илүү хурдан зүйл болгон хөрвүүлэх явдал юм.

Ямар нэг зүйл эмхэтгэе?

"Эмбэрэлт" гэдэг үгээр би PHP скрипт кодыг өөр зүйл рүү, өөр код руу орчуулахыг хэлэх болно.

Энэ тохиолдолд энэ нь хоёр төрлийн байж болно.

Төрөлх код нь физик машин дээр ажиллах боломжтой хоёртын файлын нэг төрөл юм.

Төрөлхийн бус код. Та өөр виртуал машин, жишээлбэл, JVM дээр ажиллах боломжтой байт кодыг эмхэтгэж болно.

Та PHP-ээс эх кодыг хэрхэн эмхэтгэх вэ?

Roadsend хөрвүүлэгч. Түүний үргэлжлэл нь Raven юм. PHC бас байдаг (энэ нь PHP Open Source хөрвүүлэгч юм). Сүүлийн үед HipHop (Facebook) бас гарч ирсэн.

Би эх бус кодын хувьд юу хийж болох талаар товч тойм өгөх болно. Миний мэдэхээр 3 ажлын сонголт байна. Энэ нь Java-д зориулсан байт код үүсгэх ба .Net: Quercus, Project Zero, Phalanger-д зориулж байт код үүсгэх явдал юм. Би үүнийг эх бус код болгон хөрвүүлэхийг авч үзэхгүй, учир нь бид үүнийг ашигладаггүй. Эх кодын эмхэтгэл рүү буцаж орцгооё.

Миний бодлоор хамгийн эртний хөрвүүлэгч бол Roadsend юм. Энэ нь нэлээд удаан хугацааны өмнө буюу 2002 онд боловсруулагдаж эхэлсэн. Энэ нь анх арилжааны програм байсан. Энэ нь хаагдсан, зөвхөн 2007 онд Нээлттэй эх сурвалжид гарсан. Маш төвөгтэй эмхэтгэлийн схем байдаг: тодорхой Bigloo хөрвүүлэгчийг схемийн хэлэнд ашигладаг бөгөөд үүний дараа эх кодыг үүсгэдэг. Энэ хөрвүүлэгч нь Zend Engine ашигладаггүй.

Бид тусдаа гүйцэтгэгдэх хоёртын файл үүсгэх эсвэл Apache-д зориулсан модуль үүсгэх боломжтой. Мөн вэб серверээр ажиллах хоёртын файл үүсгэх боломжтой. Гэхдээ энэ нь болохгүй байна. Яагаад гэдгийг нь мэдэхгүй ч надад огт тохирохгүй байна.

Миний мэдэхээр Roadsend-ийн ажил одоогоор хийгдээгүй байна. Энэ нь C++ хэл дээр бүрэн шинэчлэгдсэн Raven төсөл болон хувирсан. Хөрвүүлэгчийн хувьд код үүсгэхийн тулд LLVM ашигладаг.

Одоогийн байдлаар бүх зүйл маш ирээдүйтэй харагдаж байна.

Гэхдээ одоо болтол баригдаж байна. Баримт бичигт ч гэсэн бид хоёртын файл үүсгэхгүй гэсэн зөвлөмжүүд байдаг. Хүлээгээрэй.

Хэрэв бид ЭМҮТ-гүй бол гунигтай байх байсан. Энэ бол OpenSource хөрвүүлэгч юм. Энэ нь 2005 оноос хойш хөгжиж байна. Үүний нэг сул тал: энэ нь суурилуулсан SAPI ашигладаг. Бид Java машин болох Zend Engine-ийг орхихгүй. Үндсэндээ PHP кодыг PHP өргөтгөлийн модулийн код болгон хөрвүүлдэг. Үүний дараа энэ нь эмхэтгэх боловч гүйцэтгэлийн процесс нь дахин Zend Engine-ийг хамардаг.

PHC ашиглах жишээ

Бидний хэрхэн ажилладагтай маш төстэй, жишээлбэл, ердийн хөрвүүлэгч, gcc. Эхнийх нь нэг хоёртын систем байгааг харуулж байна, бид зүгээр л C кодыг үүсгэж болно. Энэ кодыг үүсгэсний дараа ижил gcc-г дотооддоо ашигладаг тул бид оновчлол болон бусад зүйлд зориулагдсан тугуудыг ашиглаж болно.

Бид командын мөрөнд ажилладаг програмын тухай ярьж байсан.

Вэб програмыг ажиллуулахын тулд хэд хэдэн алхам хийх шаардлагатай бөгөөд энэ нь нэлээд төвөгтэй юм. Эхлээд та өргөтгөл үүсгэж, дараа нь кодыг эмхэтгэж, дараа нь ямар нэгэн байдлаар (динамик эсвэл статик байдлаар) холбох хэрэгтэй.

НЭМҮТ-ийн гол давуу талууд

Үндсэндээ бид ижил PHP ашигладаг, бид бүрэн нийцдэг. Бусад бүх өргөтгөлүүдийг дэмждэг. Бид эмхэтгэсэн бүх зүйлээ ашигладаг. Маш сайн баримт бичиг.

Дашрамд хэлэхэд, PHC-ийн нэмэлт урамшууллын нэг бол та XML хэрхэн бүтээгдсэн дээр үндэслэн манай скриптийн XML ажлыг үүсгэх боломжтой бөгөөд заримдаа энэ нь ашигтай байж болох юм.

Сул талууд

Миний бодлоор, энэ нь Zend Engine-ээс хамааралтай хэвээр байгаа тул муу хоёртын хувилбар юм. Мөн вэб төслүүдийг холбоход зарим нэг төвөгтэй байдал бий.

Гол нь

Хэрэв Facebook-ийн шийдэл болох HipHop гарч ирээгүй бол энэ тайлан гарахгүй байсан байх. Үүнийг бүтээгчид мөн их хэмжээний PHP кодыг хуримтлуулж, үүнтэй юу хийхээ удаан хугацаанд бодсон.

Миний ойлгож байгаагаар бүх зүйлийг дахин бичих сонголтоос татгалзсаны дараа ямар нэгэн орчуулагч (энэ тохиолдолд C++ код руу) бичихээр шийдсэн. Төсөл нь харьцангуй залуу бөгөөд энэ оны хоёрдугаар сард албан ёсоор нээлтээ хийсэн. РНР кодыг C++ код руу хөрвүүлэн үйлдлийн систем дээрээ стандарт хэрэглүүрүүдийг ашиглан үүсгэнэ. Гэсэн хэдий ч одоогоор зөвхөн Линукс үйлдлийн системийг дэмждэг.

Өчигдөр л би Facebook-ийн төлөөлөгчөөс энэ шийдвэрийн талаар асуусан. Одоогоор РНР кодын 100% HipHop-оор эмхэтдэг гэж тэр хэллээ. Код нь PHP орчуулагчаар дамжуулан цэвэр хэлбэрээр ажиллахгүй. Дахин хэлэхэд, бүтээгчид процессорын ачааллыг мэдэгдэхүйц бууруулж байгаагаа зарлав.

HipHop-ийн үндсэн функцууд

Энэ нь өөрөө хоёртын файлыг шууд үүсгэдэг бөгөөд үүнийг командын мөрөнд гүйцэтгэх боломжтой. Үүнийг урсгал вэб сервер болгон эхлүүлэх ийм сонголт байдаг. Мөн тусдаа суурилуулсан дибаглагч байдаг. Энэ нь скриптүүдийг локал болон алсаас дибаг хийх боломжтой (энэ нь сервер болж ажиллах болно).

Угсрах үйл явц нь маш энгийн зүйл биш юм. Тодорхойлолт байгаа ч хаа сайгүй цуглуулдаггүй. Одоогийн байдлаар миний хэлсэнчлэн бүх зүйл Линукс дээр угсарч байгаа бөгөөд эхэндээ бүх зүйлийг 64 битэд зориулж "зассан" байсан. Хэдийгээр 32 битийг одоо туршилтаар дэмждэг. Гэхдээ би үүнийг угсарч, бага зэрэг нөхөж чадсан - ерөнхийдөө энэ бүгдийг хийсэн, учир нь энэ нь анхдагчаар угсардаггүй.

Нэмж дурдахад тэд libcore-ийн өөрийн хувилбаруудтай бөгөөд миний бодлоор засвар хийх шаардлагатай хэд хэдэн номын сан байдаг. Ерөнхийдөө угсрах үйл явц нь тийм ч хялбар биш юм.

Угсарсны дараа гаралтанд бид тодорхой hphp файлыг хүлээн авдаг бөгөөд энэ нь бидний PHP кодын C++ хэл рүү орчуулагч юм. Хэрэв бид тугуудыг харвал нэлээд олон байдаг. Танд хэрэгтэй байж болох хэд хэдэн үндсэн зүйлийг би энд онцолсон.

Бид HDF форматтай файлыг янз бүрийн удирдамжийг зааж өгсөн тохиргооны файл (тохиргоо) болгон ашиглаж болно. Бид тэнд алдааны түвшин болон бусад зүйлийг тохируулж болно (HDF нь бүтэцлэгдсэн хэлбэрээр байдаг бүх зүйл юм). Мөн бид тохиргоог мэдээллийн сангаас авах эсвэл командын мөрөнд шууд ашиглах боломжтой.

Бид эмхэтгэлийн явцад бүртгэлийн түвшинг тогтоодог: бүх алдааг харуулах эсвэл анхааруулга, нэмэлт мэдээллийг харуулах эсвэл ерөнхийдөө болж буй бүх зүйлийн бүрэн бүртгэлийг хөтөлдөг.

Маш хэрэгтэй заавар бол input_list=FILE бөгөөд энэ нь бидний эмхэтгэхийг хүссэн скриптүүдийн жагсаалтыг зааж өгөх боломжийг олгодог. Мөн lazy-bind гэх мэт удирдамжийг дурдах нь зүйтэй. Бид бүх төслийн файлуудыг - эмхэтгэгдэх файлуудыг зааж өгч болно.

PHP скрипт эмхэтгэлийг ажиллуулах жишээ

Гурав дахь түвшний мод бэлтгэлийг суулгасан, цаг тухайд нь нэлээд ерөнхий мэдээлэл байгаа, та хэр хугацаа зарцуулсан болохыг харж болно. Үнэндээ скрипт нь маш энгийн. Энэ бол ердийн "Сайн уу, Дэлхий" гэж би зүгээр л дэлгэцийн агшинг авсан.

Хамгийн хүнд файл бол манай "програм" хоёртын файл бөгөөд хэмжээ нь 28 МБ юм. Үндсэндээ манай "Сайн уу, Дэлхий" 28 МБ жинтэй. Энэхүү хоёртын хувилбар нь "Цуурай "Сайн уу, Дэлхий!" стандарт шугамаас гадна бүрэн хэмжээний вэб сервер, удирдлагын бүрэн эрхт сервер гэдгийг тэмдэглэхийг хүсч байна.

Бид юу хийж байна вэ?

Бидэнд C++ хэл дээр "Сайн уу, Дэлхий" гэсэн нэг мөрийг гүйцэтгэдэг "Сайн уу ..." байгаа бөгөөд үүнээс гадна олон тооны гуравдагч этгээдийн файлууд ачаалагдсан байна C++ хэл дээр.

Энэ бол үр дүнгийн хөтөлбөр юм. Энэ нь аль хэдийн өөр өөр тохиргоонд зориулсан хэд хэдэн өөр түлхүүрүүдийг агуулж байгаа боловч би зөвхөн цөөн хэдэн зүйлийг дурдах болно.

Энэ бол --mode, энэ бол манай програмыг эхлүүлэх горим юм. Бид үүнийг шууд (командын мөрөөс) эсвэл вэб сервер эсвэл бүрэн демон горимоор ажиллуулж болно. Өөр хэд хэдэн сонголт байгаа боловч тэдгээр нь тийм ч чухал биш юм.

config нь ижил форматаар ашиглагддаг. Зөндөө байгаа учраас би заавар өгөөгүй. HipHop нь баримт бичгийн хамт ирдэг. Энэ нь вики сайтад байхгүй, гэхдээ бүх зүйлийг тодорхой тайлбарласан түгээлтийн хамт бичиг баримтыг хангасан болно. Энэ нь танд шийдлийг уян хатан байдлаар тохируулах боломжийг олгоно гэж би огт төсөөлөөгүй.

Серверийн горимд ажиллахын тулд бид портыг зааж өгч болно. Захиргааны хувьд тусдаа портыг ашигладаг бөгөөд та серверийг удирдах боломжийг олгодог зарим хүсэлтийг илгээж болно. Хэрэв бид дибаг хийх сервер ажиллаж байгаа бол дибаг хийхэд зориулж "холбох" хост болон портыг зааж өгнө.

Эхлэх жишээ

Жишээ нь, бид 9999 портыг өргөн нэвтрүүлгийн хувьд зааж өгсөн. Энгийн http хүсэлтийг гүйцэтгэснээр бид статистик мэдээллийг хүлээн авах эсвэл ямар нэгэн байдлаар серверийг удирдах эсвэл нэмэлт мэдээлэл авах боломжтой. Ерөнхийдөө энэ нь маш тохиромжтой.

Статусын мэдээлэл авах сонголт

Төрөл бүрийн суулгасан форматаар (xml, json, html) тохируулсан серверийн статусыг хүлээн авах боломжтой. Үндсэндээ серверийн мастер процессын тухай болон хүсэлтийг боловсруулдаг дамжуулагчийн тухай мэдээлэл өгдөг.

Нэмэлт статистик

Ер нь маш их статистик мэдээлэл өгдөг. HipHop нь MySQL хэлбэрээр memcache болон SQL-тэй ажилладаг тул түүгээр хийгдсэн бүх үйлдлийн талаар дэлгэрэнгүй мэдээллийг өгдөг.

Бүрэн санах ойн статистик

Энд маш хэрэгтэй функц байдаг - Application Stats. PHP-д HipHop-ийн нэмэлт функцуудыг ашигласнаар бид скрипт дээрээ статистикийг бичиж, http-д тогтмол хандах замаар хүлээн авдаг.

Дибаг хийх

Би аль хэдийн хэлсэнчлэн скриптийг дибаг хийхдээ суурилуулсан "дибаг"-ыг ашиглах боломжтой. Энэ нь маш тохиромжтой, учир нь hphpi орчуулагч нь бидний эмхэтгэсэнтэй адилхан ажилладаг. Стандарт PHP дээр ажиллах болон зарим эмхэтгэсэн өгөгдлийг ашиглах үед скриптүүдийн "зан төлөв" ялгаатай байдаг. Эмхэтгэсэн зүйлийг дибаг хийхийн тулд Facebook тусдаа орчуулагч бичсэн.

Эхний тохиолдолд бид кодыг "-f" шилжүүлэгчээр ажиллуулж, файл хэрхэн ажиллаж байгааг харна; бүх гаралт stdout руу явдаг. Эсвэл бид үүнийг дибаг хийх горимд ажиллуулж, интерактив дибаглагч руу орж болно. Энэ нь стандарт GDB-тэй маш төстэй: та мөн таслах цэгийг тохируулах, ажиллуулах, хувьсагчийн утгыг оруулах, хянах гэх мэт боломжтой.

Нэмэлт шинж чанаруудын нэг

Бид эмхэтгэсний дараа гарсан програмтай. Үүнийг RPC сервер болгон ашиглаж болно. Бид хүсэлтийг http дээр ажиллуулдаг ба params функцийг дуудсанаар бид параметрийг json массив эсвэл тусдаа параметр болгон дамжуулж болно. Бид json-г буцаах бөгөөд энэ нь эдгээр функцүүдийн үр дүнг буцаана. Энэ нь маш тохиромжтой - шаардлагатай функцийг аль хэдийн эхнээс нь суулгасан.

Хипхопын сул тал

Одоогийн байдлаар HipHop нь eval(), create_function() болон preg_replace() гэх мэт хэлний бүтэц, функцуудыг /e-тэй дэмждэггүй ч эдгээр нь бүгд eval()-тэй төстэй. Үнэн, миний бодлоор хамгийн сүүлийн хувилбаруудад та config-ээр дамжуулан eval()-г идэвхжүүлж болно. Гэхдээ үүнийг хийхийг зөвлөдөггүй. Ерөнхийдөө eval()-г хэрэглэхэд муу.

Хипхопын гол давуу талууд

Мэдээжийн хэрэг, гол давуу тал бол Facebook-ийн дэмжлэг юм. Энэ нь ажиллаж байгаа бөгөөд нэлээд идэвхтэй хөгжиж байна. Энэ төслийн эргэн тойронд хөгжүүлэгчдийн нийгэмлэг бий болж байна. PHP-ийн цоо шинэ хэрэгжилт бичигдсэн.

Би аль хэдийн хэлсэнчлэн, давуу тал нь эх код үүсгэгддэг. Процессорын ачааллын зардлыг бууруулах замаар гүйцэтгэлийн өсөлтийг шаарддаг (туршилтууд үүнийг баталж байна).

Энэ нь тохиргооны хувьд нэлээд уян хатан байдаг. Өөрчлөлт хийх хэд хэдэн сонголт байгаа нь намайг гайхшруулсан. Энэ нь төсөл хэрэгжиж байгаатай холбоотой гэж бодож байна. Ашигласан бүх зүйл нэмэгддэг.

Өмнө дурьдсанчлан, HipHop нь маш олон нэмэлт боломжуудыг өгдөг. Эдгээрт RPC сервер болгон ашиглах, удирдлага, төрөл бүрийн статистик болон бусад олон зүйлс орно. Дашрамд хэлэхэд бусад хэлтэй ажиллах API бас байдаг.

Энэ шийдлийн талаар нэлээд сайн баримт бичиг бичсэн. Өөр нэг давуу тал: энэ бол үйлдвэрлэлд ашиглахад бэлэн болсон шийдэл юм (жишээ нь: Facebook).

Сул талууд

Гол сул тал нь одоогоор хязгаарлагдмал тооны модулийг дэмждэг. Жишээлбэл, мэдээллийн сантай ажиллахдаа бид зөвхөн MySQL функцийг ашиглах боломжтой. Энд PostgreSQL дэмжлэг байхгүй.

Миний өмнө дурдсан угсралтын нарийн төвөгтэй байдал гэх мэт зүйл бас бий. 32 битийн систем дээр бүтээхэд асуудал гардаг. Гэхдээ үүнийг удахгүй засна гэж бодож байна. Одоогоор зөвхөн PHP 5.2-ын эмхэтгэлийг ашиглаж байна. 5.3 хувилбар хараахан дэмжигдээгүй байгаа ч амласан ёсоороо дэмжигдэх болно.

Ерөнхийдөө эмхэтгэлээс, тэр дундаа Хипхопоос юу хүлээх ёсгүй вэ?

Эмхэтгэх нь өгөгдлийн сан дахь удаан SQL асуулгыг хурдасгахгүй. Хэрэв бөглөрөл нь мэдээллийн сан юм бол үүнийг эмхэтгэх эсвэл эмхэтгэхгүй байх нь ямар ч сайн зүйл хийхгүй.

Эмхэтгэл нь статик ачааллыг хурдасгадаггүй, зөвхөн динамик ачааллыг гүйцэтгэдэг. Энэ нь дибаг хийхийг илүү хэцүү болгодог. PHP дээр бүх зүйлийг дибаг хийхэд маш хялбар байдагт олон хүмүүс дассан байх. Эмхэтгэлийн явцад энэ нь цаашид тохиолдохгүй. Хэдийгээр миний тэмдэглэснээр Facebook энэ үйл явцыг аль болох хялбар болгосон ч үүнгүйгээр бүрд эмхэтгэх нь бүр ч хэцүү байх болно.

Энэ нь таны бүх асуудлыг шийдэх "мөнгөн сум" болно гэж бүү найд. Үнэн хэрэгтээ эмхэтгэл нь нэлээд явцуу хүрээний асуудлыг шийддэг. Хэрэв тэд байгаа бол энэ нь тусалж магадгүй юм.

Эмхэтгэл нь ямар асуудлыг шийддэг вэ?

Энэ нь CPU-ийн ачааллыг бууруулдаг, учир нь PHP болон олон тооны хүсэлтүүдтэй идэвхтэй ажиллах үед ачаалал ихээхэн нэмэгддэг. Мэдээжийн хэрэг, би хэд хэдэн туршилт хийхийг хүсч байна.

Туршилт хийх

Эхний туршилт (хамгийн энгийн) нь нэлээд урт хугацаа шаарддаг нэлээд үнэтэй ажиллагаа юм. Туршилтуудад би өөрийгөө хийсвэрлэхийг хичээж, гадны эх сурвалжийг ашиглан хүсэлт гаргахгүй байхыг хичээсэн.

Ачаалал нь бүхэлдээ процессор дээр унадаг. Туршилт нь HipHop хүн бүрийн эсрэг "ялсан" болохыг харуулсан: энэ нь стандарт PHP хөрвүүлэгчээс бараг нэг хагас дахин хурдан ажилладаг. ЭМҮТ энэ шалгалтыг маш удаан давсан.

Хоёрдахь гүйцэтгэлийн тестийн хувьд би албан ёсны PHP скриптийг ашигласан бөгөөд үүнийг SVN-ээс татаж авах боломжтой. Энэ нь ангилах, хуваарилах, нэгтгэх хэд хэдэн функцийг гүйцэтгэдэг - математикийн үүднээс нэлээд үнэтэй үйлдлүүдийг гүйцэтгэдэг.

Хипхоп дахин тэргүүлж байсан. Түүгээр ч барахгүй стандарт PHP-ийн хувьд цагийн зөрүү ойролцоогоор 3 дахин их байдаг. PHC энд илүү сайн гүйцэтгэлтэй байсан ч HipHop-оос хагас дутуу байсан.

PHP нь ихэвчлэн http хүсэлтийг хариуцдаг урсгалуудад ашиглагддаг - үүнийг санах нь зүйтэй.

Хэд хэдэн стандарт тохиргоонууд (PHP-тэй Apache, fpm-php-тэй Nginx болон кодын кэш хийхэд зориулсан залгаастай APC). Тав дахь сонголт бол HipHop.

Үнэнийг хэлэхэд би туршилтыг сервер дээр биш, харин зөөврийн компьютер дээр хийсэн. Тоонууд нь мэдээжийн хэрэг бодит байдалтай бүрэн нийцэхгүй байж болох ч энэ тохиолдолд үр дүн нь хэвийн байна. Ачаалал ихсэх тусам хүсэлтийн тоо болон нийт хүсэлтийн тоо нэгэн зэрэг нэмэгдэж байгааг тэмдэглэх нь зүйтэй. Дараагийнх нь RPS. Бид 10 энгийн оруулга агуулсан стандарт хуудсыг туршиж үзсэн. Үндсэндээ энэ нь PHP хэлийг орчуулагч болгон туршиж байгаа хэрэг юм.

Үзэгчдийн асуулт:Нүдэнд хэдэн секунд байна вэ?

Алексей Романенко:Энэ бол fps.

Эндээс бид нэгэн зэрэг хүсэлтийн тоо нэмэгдэх тусам HipHop маш сайн ажилладаг гэж дүгнэж болно.

Эндээс харахад APC ашиглах нь стандарт практик юм. Энэ нь жишээ нь Apache-ийн гүйцэтгэлийг 2 дахин нэмэгдүүлснийг харуулж байна. Энэ нь Nginx-д бас тохиолддог. Гэхдээ Nginx удаан байгаа нь энэ багц илүү муу гэсэн үг биш юм. Зөвхөн тусгай шалгалт. Хэрэв бид үнэхээр энд тест хийвэл Apache удаан хүсэлтээр "үхэх" болно.

Энэ нь бидэнд хэрэгтэй юм уу, үгүй ​​юу гэдгийг ойлгохыг хүсч байгаа байх.

Хэзээ эмхэтгэлийн талаар бодох ёстой вэ?

Бидний гацаа нь CPU гэдгийг харахад энэ нь зайлшгүй шаардлагатай байх магадлалтай. Хэрэв бид PHP-г стандарт орчуулагч болгон ашиглаж байгаа бол CPU-тэй холбоотой бол төслийн нэг хэсгийг эмхэтгэж болно гэдгийг анхаарч үзэх нь зүйтэй болов уу.

Зарим тохиолдолд таны програмыг ажиллуулахын тулд бие даасан байх шаардлагатай бол энэ арга тохирохгүй байх магадлалтай.

Серверийн тоог багасгах. Олон сервер байгаа үед бүтээмжийг 2 дахин бууруулснаар бид тоог хоёр дахин бууруулна. Энэ нь нэг сервер байхад ямар ч утгагүй, гэхдээ 100-200 нь байвал утга учиртай байх магадлалтай.

Фэйсбүүк HipHop-ийг ашиглах болсон гол шалтгаан нь дахин бичих боломжгүй (эсвэл хэн ч байхгүй, эсвэл зүгээр л үнэтэй) PHP код их хэмжээгээр байгаа явдал юм. Бүтээмжийг 2 дахин нэмэгдүүлэх нь аль хэдийн сайн.

Магадгүй бүх зүйл. Асуултуудыг хүлээж байна.

Асуултууд ба хариултууд

Үзэгчдийн асуулт:Сайн уу. Танд Фэйсбүүкээс өөр хипхоп амжилттай хэрэгжсэн жишээ байгаа эсэхийг хэлж өгнө үү. Та RBC вэбсайтыг жишээ нь HipHop руу шилжүүлэхийг хүсч байна уу? Алексей Романенко:Би хоёр дахь нь эхэлье. RBC вэбсайтыг орчуулахад хэцүү байдаг. Амжилттай хэрэгжүүлэх тухайд. Би PHP нэгжийг өөрөө эмхэтгэсэн, амжилттай эмхэтгэсэн. Мөн миний мэдэхээр PHP Bunty самбар амжилттай эмхэтдэг. Үнэн хэрэгтээ хэд хэдэн байгууллагууд эмхэтгэлийг аль хэдийн ашигладаг. Цаашдын туршилтууд энэ төслийг ашиглах нь хэр үндэслэлтэй болохыг харуулах болно. Үзэгчдийн асуулт:Үүнийг ашигладаг байгууллагын жишээг та хэлж чадах уу? Алексей Романенко:Үнэнийг хэлэхэд, би танд одоо хэлэхгүй, гэхдээ энэ бол Баруун. Миний мэдэхээр энд хэн ч ашигладаггүй. Үзэгчдийн асуулт:Таны дурдсан зарим функцийг дэмжихгүй байхаас өөр ажиллах хугацааны ялгаа нь юу вэ? "Шууд" төслийг орчуулах нь хэр аюултай вэ? Алексей Романенко:Ялгаа нь эмхэтгэсэн ямар ч програм эвдэрч болзошгүй. Магадгүй хараахан тогтоогдоогүй байгаа зарим асуудал гарч ирэх байх. Үнэн хэрэгтээ PHP-ийн өөрийнх нь "зан төлөв" хэд хэдэн ялгаатай байдаг. Дэлгэрэнгүй мэдээллийг баримтаас авах боломжтой тул би тэдгээрийг оруулаагүй. Фэйсбүүкийн баг өөрийн орчуулагчийг бичсэн бөгөөд энэ нь хөрвүүлсэн хэлбэрээр ажиллахтай 99.9% тэнцүү байна. Кодоо стандарт PHP орчуулагчаар биш, миний хэлсэнчлэн PHP-д зориулсан hphpi-ээр шалгах нь дээр.

Бараг бүх хөгжүүлэгчид эрт орой хэзээ нэгэн цагт зарим кодыг ажиллуулах эсвэл хурдан шалгах хэрэгцээтэй тулгардаг, гэхдээ ийм энгийн ажилд хүнд ширээний IDE эсвэл програм хөрвүүлэгч ажиллуулах шаардлагагүй гэдгийг хүн бүр мэддэггүй. Бүх зүйлийг илүү хурдан хийх боломжтой онлайн хэрэгслүүдийг ашиглахад хангалттай: Ctrl+C, Ctrl+V, Run, whack - програмын гаралт аль хэдийн таны улаавтар нүдний өмнө байна.

Бид хамгийн шилдэг онлайн хөрвүүлэгчдийг сонгосон: тэдгээрийн зарим нь нэлээд түгээмэл байдаг, зарим нь хатуу тодорхойлсон даалгаварт зориулагдсан байдаг. Ямар ч тохиолдолд тэд илүүдэхгүй байх болно.

Кодинг

Koding.com нь уламжлалт утгаараа онлайн хөрвүүлэгч биш юм. Үйлчилгээний хэрэглэгч бүр үүлэн дээр Ubuntu 14.04 үйлдлийн системтэй хэд хэдэн бүрэн хүчин чадалтай виртуал машин үүсгэж, түүгээр хүссэн бүхнээ хийх, тэр дундаа код боловсруулах боломжтой. Бүх алдартай хэлүүдийг анхдагчаар дэмждэг боловч та өөрийнхөө хэлийг хялбархан нэмж болно.

Таны серверийн хяналтын самбараас гадна интерфэйс дээр тохиромжтой IDE болон терминалын цонх байдаг. Koding бол хамгийн түгээмэл хэрэгсэл юм;

IdeaOne

IdeOne бол 60 гаруй програмчлалын хэл болон тэдгээрийн тодорхой хувилбаруудыг хөтөч дээр шууд ажиллуулах боломжийг олгодог онлайн хөрвүүлэгч, дибаг хийх хэрэгсэл юм.

Найз охингүй хүмүүст зориулж бүтээгчид Brainfuck хэлээр код эмхэтгэсэн.

JDoodle

Олон хэлийг дэмждэг өөр нэг онлайн хөрвүүлэгч, түүний дотор бусад олон онлайн хөрвүүлэгчээс олж чадахгүй. JDoodle-ийн сайхан шинж чанар бол хамтран ажиллах чадвар юм - зүгээр л одоогийн сессийн холбоосыг илгээж, давхар хурдтайгаар алдаа үүсгээрэй!

jsFiddle

Энэ нэр таныг бүү хуураарай - jsFiddle нь зөвхөн JavaScript-д зориулагдсан биш юм. Энэхүү онлайн засварлагч нь JavaScript, HTML болон CSS-ийн дурын хослолыг шалгах боломжийг танд олгоно. Мэдээжийн хэрэг, jQuery, Vue, React, TypeScript гэх мэт янз бүрийн фреймворкууд, мөн SCSS гэх мэт CSS-ийн урьдчилсан процессоруудыг дэмждэг. Тохиромжтой болгохын тулд та дуртай засварлагчаасаа түлхүүрийн холбоосыг сонгож болно. Хэрэв таны дуртай редактор бол Vim, Emacs эсвэл Sublime Text байвал үнэн.

CodePad

CodePad бол кодыг хадгалах, хуваалцах, гүйцэтгэлийн үр дүнгийн дараагаар ажиллуулах боломжтой минималист үйлчилгээ юм. Хамгийн түгээмэл хэд хэдэн хэлийг сонгох боломжтой боловч харамсалтай нь орчуулагч эсвэл хөрвүүлэгчийн тодорхой хувилбарыг сонгох боломжгүй байна.

Үүний гол давуу тал нь энгийн бөгөөд хялбар байдал юм: сайт удаан интернет холболттой байсан ч хурдан ажиллах болно. Стандарт толгойнуудын автомат холболт, түүнчлэн Vim эсвэл Emacs-тай нэгтгэх боломжтой.

Сул талуудын нэг нь маягт руу код оруулахдаа синтакс онцлох бүрэн дутагдалтай байдаг. Гэхдээ аль хэдийн хадгалсан бичлэгийг үзэх үед арын гэрэлтүүлэг байдаг.

GCC GodBolt

GCC GodBolt бол интерактив C++ хөрвүүлэгч юм. Би энэ цуглуулгад энгийн интерфэйстэй, түүнчлэн олон тооны тохиргоо, түүний дотор товчлууруудыг ашиглан тохируулж болох сонголттой учраас орсон.

Хамгийн сүүлийн хувилбаруудыг оруулаад сонгох боломжтой олон хөрвүүлэгч хувилбарууд байдаг. Сонирхолтой шинж чанаруудын нэг нь програмын кодыг ассемблер хэл рүү шууд орчуулах явдал юм.