Uzbudljiva nit rasprave php. Odabir PHP verzije za Windows. Razlika između niti sigurnih i nenitnih PHP binarnih paketa

Pažnja! Ovaj je članak beznadno zastario ili ga autor sada procjenjuje kao informacijski beskoristan.

Ljepota open-source koda je njegova otvorenost :)) To jest. ako imate inteligencije/vremena/želje, možete točno shvatiti kako program radi. Loša strana takvog koda je poteškoća u dobivanju potrebnih kompiliranih paketa. Na primjer, PHP se može preuzeti kao izvorni kod za Nix sustave s naknadnom kompilacijom/sastavljanjem. Sve je već sastavljeno za Windows, ali ima puno gotovih binarnih paketa! Opcije s " nit sigurno/ne nit sigurno", VC6/VC9 i različite verzije samog PHP-a. Članak je stvoren da razjasni situaciju. Temelji se na različitim izvorima, dijelom na prijevodu s engleskog. Sve kako sljedeći put ne bih morao ponovno smišljati - "koja je svrha!?"

potrebno PHP verzija ovisi o verziji web poslužitelja na kojem će se koristiti. Na primjer, Apache 1.3.x radi s PHP verzijom 3.0.x, Apache 2.x radi s PHP verzijom 4.0 i novijim. Ali to nije toliki problem, fokusirajte se na novija stabilna izdanja i ono što ima hoster.

Kakve poštapalice VC6, VC9, VC11? PHP izvori za Windows kompilirani su u Visual Studio. VC9 se dobiva kada se kompajlira u VS 2008, VC11 - Visual Studio 2012. Sukladno tome, da bi cijela ova stvar radila za vas, biblioteke moraju biti instalirane na vašem računalu Visual C++ za redistribuciju za Visual Studio odgovarajuću godinu. Malo pojašnjenja po ovom pitanju.

Osim toga, ako je vaš web poslužitelj stari Apache s apache.org, tada trebate preuzeti VC6 verziju PHP-a za čiju kompilaciju je korišten Visual Studio 6. Ako će PHP raditi za IIS ili u kombinaciji s novijim Apacheom , onda možete skupiti nešto modernije ;)

Meni je glavna prepreka u odabiru hoster. Sada postoji stabilna verzija PHP-a 5.5.4, ali on još uvijek ima 5.2.17!

Sada zanimljiv dio: " niti sigurno ili nije niti sigurno?"
Slobodan prijevod članka (Dominic Ryan, 27.09.2007.)

Nikada nisam vidio tako pokvareni engleski:((Htio sam brzo prevesti članak, ali imam poteškoća s razumijevanjem onoga što je autor napisao. Konstantni prijelazi između "što-je-to" i složenih rečenica općenito ističu Moskvu. Prijevod na Ruski je isto kompliciran činjenicom da nemam dovoljno znanja i mašte kako ispravno nazvati nešto na ruskom što je obično napisano samo na engleskom%) Na primjer, nikada nisam vidio tehnički koncept "višeprocesne arhitekture" na ruskom, ali moj biser je "protok-nesiguran" općenito je pitanje zdravog razuma. Općenito, reći ću vam što se dogodilo.

Razlika između niti sigurno I nije siguran za niti PHP binarni paketi

Otkako se PHP prvi put pojavio u sustavu Windows 20. listopada 2000. s PHP 3.0.17, njegovi su binarni paketi uvijek građeni kao niti sigurno (TS). Razlog je sljedeći: Windows koristi višenitnu arhitekturu, a Nix sustavi podržavaju višeprocesnu arhitekturu. Ako je PHP kompajliran kao višeprocesna CGI aplikacija umjesto multi-threaded aplikacije, onda njegova upotreba kao CGI modula pod Windowsima na IIS poslužitelju dovodi do ozbiljnog usporavanja i upotrebe CPU-a. S druge strane, možete povezati PHP s IIS-om kao ISAPI modul ( potrebna je višenitna izgradnja- cca. prevoditelj). Tada se javlja još jedan problem: neka popularna PHP proširenja dizajnirana su za Unix/Linux na umu, tj. s višeprocesnom arhitekturom, što dovodi do pada PHP-a spojenog na IIS kao ISAPI modul. Da. CGI kreiranje je najstabilnije okruženje za PHP na IIS-u s glavnim nedostatkom što je užasno sporo. Moramo učitati i rasteretiti cijelo PHP okruženje iz memorije svaki put kada postoji zahtjev.

U to je vrijeme postojalo nekoliko opcija za poboljšanje performansi PHP-a na IIS-u. Prvi je korištenje predmemoriranja opcodea s programima kao što je eAccelerator, koji pohranjuju PHP skripte u djelomično kompiliranom stanju na disku i/ili u memoriji. Ovaj pristup značajno smanjuje vrijeme izvršavanja skripte. Druga je mogućnost bila konfigurirati IIS za korištenje PHP-a u načinu rada FastCGI. U ovom slučaju, PHP proces se nije zatvorio nakon završetka, već je primio novi zadatak sa sljedećim PHP zahtjevom. Osim toga, bilo je moguće pokrenuti nekoliko PHP procesa u isto vrijeme, značajno ubrzavajući obradu zahtjeva, što je bio bonus PHP CGI moda. Međutim, možda je bilo manjih problema s kompatibilnošću s PHP proširenjima. Ovo je još uvijek najbrži način korištenja PHP-a i za to je konfiguriran IIS Aid PHP Installer.

Binarne datoteke prikupljene u način rada koji nije siguran za niti (nije siguran za niti, NTS), omogućuju vam da konfigurirate IIS (i druge web poslužitelje u sustavu Windows) da koriste PHP kao standardno CGI sučelje sa snažnim povećanjem performansi, jer u ovom slučaju (u takvoj verziji), PHP proces ne treba čekati da se niti sinkroniziraju. Kada se uspoređuju performanse PHP binarnih paketa "sigurnih niti" i "nesigurnih niti" na IIS-u kao standardnom CGI sučelju, povećanje performansi je do 40%, ali još uvijek nije tako brzo kao korištenje opcodea u FastCGI metodi . A najveći problem je što ne možete pouzdano koristiti binarne datoteke koje nisu sigurne za niti zajedno s onima koje su sigurne za niti. To znači da ne možete koristiti sustave za predmemoriju opcodea kao što je eAccelerator u PHP okruženju stvorenom pomoću binarnih paketa koji nisu sigurni za niti (izjava koja je točna u vrijeme pisanja).

Ako se PHP koji nije siguran za niti ne može konfigurirati na istu brzinu kao okruženje sigurno za niti, zašto je onda potreban u takvoj izradi? Vratimo se FastCGI-ju i razvoju Microsofta u ovom području u posljednjih nekoliko godina. Small-soft koderi stvorili su vlastitu verziju FastCGI-ja, koja vam omogućuje konfiguriranje PHP binarnih datoteka koje nisu sigurne za niti u FastCGI načinu rada, što donosi performanse brzinom svjetlosti :)

Iz članka sam zaključio da se kočnice promatraju samo kada se koriste s IIS web poslužiteljem. U svakom slučaju, pod Windows+Apache nisam vidio nikakve gluposti. Također piše da možete overclockati NTS sklop bilo koji web server, ali ne mogu zamisliti takvu Apache konfiguraciju.

Rasprava u nitima

A rasprava s nitima je elektronička rasprava (kao što je ona putem e-pošte, popisa e-pošte, oglasne ploče, grupe ili internetskog foruma) u kojoj softver pomaže korisniku vizualnim grupiranjem poruka. Poruke su obično grupirane vizualno u hijerarhiju prema temi. Skup poruka grupiranih na ovaj način naziva se a nit teme ili jednostavno "nit". Kaže se da forum za rasprave, klijent e-pošte ili klijent vijesti ima "teme u nitima" ako grupira poruke o istoj temi zajedno radi lakšeg čitanja na ovaj način. Štoviše, rasprave u nitima obično dopuštaju korisnicima da odgovore na određenu objavu unutar teme teme. Kao rezultat toga, može postojati hijerarhija rasprava unutar teme teme. Različite vrste softvera mogu dopustiti da se ova hijerarhija prikaže u onome što nazvan Threaded Mode. (Alternativa je linearni način, koji obično prikazuje sve postove prema datumu, bez obzira na to tko je kome konkretno odgovorio.)

Prednosti

Prednost hijerarhijski raspoređenih prikaza je u tome što omogućuju čitatelju da brzo shvati cjelokupnu strukturu razgovora: konkretno tko kome odgovara. Kao takav je najkorisniji u situacijama s produženim razgovorima ili raspravama, kao što su novinske grupe: doista, za stvarno složene rasprave, brzo postaje nemoguće pratiti argument bez neke vrste hijerarhijskog sustava niti.

Još jedna prednost je u suptilnijem razumijevanju zajednice u hijerarhijski razrađenim sustavima. Kako se odgovori moraju dati na određene objave, oni se također daju određenim pojedincima. Razgovori u nizu stoga imaju tendenciju usredotočiti pisca na specifične stavove i osobnost pojedinca na kojeg se odgovara. Ovo se rjeđe događa na forumima gdje se najnoviji komentar samo ubacuje u opći skup.

Nedostaci

Nedostatak hijerarhijskog nizanja naspram ravnih niti je povećana razina komplikacije, a takav pogled stoga zahtijeva povećanu razinu udobnosti i sofisticiranosti od strane svojih korisnika. Stoga nije iznenađujuće da je njegovo preuzimanje najveće u nekim od najstarijih i/ili najsofisticiranijih online zajednica, kao što su Usenet, CIX ili Slashdot. Sustavi za web chat i komentare su, za usporedbu, mlađi i otvoreni široj publici, i kao takvi hijerarhijski nizovi tek su nedavno postali uobičajeni u takvim arenama.

Nametanje hijerarhije stabla također ima tendenciju fragmentacije rasprave unutar teme: više nije moguće objaviti poruku koja odgovara ili sažima nekoliko različitih prethodnih postova. Umjesto toga, na svaki prethodni post mora se odgovoriti pojedinačno. Može se raspravljati o tome da to dovodi do više sukobljenog stila rasprave na forumima koji koriste hijerarhijsko povezivanje. Međutim, koliko god to moglo biti točno, ako izravan odgovor u nizu više nije moguć zbog količine odgovora na željenu objavu, korisnici sada često koriste citate osobe kojoj odgovaraju kako bi održali razgovor na pravom putu i tijeku glatko Ovo preporučuje većina zajednica oglasnih ploča u slučaju da je nizanje doseglo svoje inače opsežno ograničenje.

Otvorena nit

Otvorena nit odnosi se na post na blogu gdje čitatelji mogu komentirati i raspravljati o bilo kojoj temi koju odaberu. Obično su korisniji na popularnim blogovima s velikim prometom; često se koriste kada autor bloga nema temu za objavljivanje ili kada postoji zatišje u objavljivanju.

Otvorene teme također se koriste za razbijanje monotonije postova na glavnim stranicama blogova. Komentari se mogu nadograditi na postove orijentirane na sadržaj; stoga autori koriste otvorene niti kako se vrijeme učitavanja stranice ne bi usporilo.

Primjeri

*Yahoo! Grupe [ http://groups.yahoo.com/], MSN grupe [ http://groups.msn.com/] i Slashdot [ http://www.slashdot.com/] svi nude forume temeljene na webu koji sadrže rasprave u nitima.

Vidi također

*Scholarly Skywriting
* Popis pojmova za bloganje

Reference

*Dartmouth. (2003). [ http://www.dartmouth.edu/~webteach/articles/discussion.html "Rasprava na mreži" ]
*Wolsey, T. DeVere, [ http://www.readingonline.org/articles/art_index.asp?HREF=wolsey/index.html "Rasprava o književnosti u kibernetičkom prostoru: mladi adolescenti koriste skupine za raspravu s nitima za razgovor o knjigama] . "Reading Online", 7(4), siječanj/veljača 2004. Preuzeto 30. prosinca 2007.

Zaklada Wikimedia. 2010.

  • Leon Powe
  • Barh Azoum

Pogledajte druge rječnike:

    Internetski forum- Programski paket phpBB Internet Forum, jedan od najpopularnijih forumskih paketa… Wikipedia

    Povijest virtualnih okruženja za učenje 1990-ih- U povijesti virtualnih okruženja za učenje, 1990-e su bile vrijeme rasta, prvenstveno zbog pojave pristupačnog računala i Interneta. 1990-e 1990.* Formal Systems Inc. iz Princetona, NJ, SAD predstavlja procjenu temeljenu na DOS-u… … Wikipediju

    Kava- Obrazovno okruženje za suradnju licem u lice Razvojni(-i) konzorcij LEAD Stabilno izdanje 5.0 / lipanj 2010. Operativni sustav Cross platform … Wikipedia

    Niti razgovora- je značajka koju koriste mnogi klijenti e-pošte, oglasne ploče, news grupe ili internetski forumi u kojima softver pomaže korisniku vizualnim grupiranjem poruka. Poruke su obično grupirane vizualno u hijerarhiju prema temi. Skup poruka grupiranih... ... Wikipedia

    Slashdot- Snimka zaslona URL-a glavne stranice Slashdot.org slashdot.org Slogan Vijesti za štrebere. Stvari koje su važne...Wikipedia

    MediaWiki- prostor imena preusmjerava ovdje. Za pomoć u vezi s imenskim prostorom MediaWiki na Wikipediji, pogledajte Pomoć: prostor imena MediaWiki. Za opće informacije o prostorima imena Wikipedije pogledajte Wikipedija:Prostor imena. Stranica za razgovor i MediaWiki stranica za razgovor preusmjeravaju ovdje. Za... ... Wikipediju

    Računalno posredovana komunikacija- Za druge upotrebe, pogledajte CMC (višeznačna odrednica). Komunikacija posredovana računalom (CMC) definirana je kao svaka komunikacijska transakcija koja se odvija upotrebom dva ili više umreženih računala. Dok se termin tradicionalno odnosio na one... ... Wikipedia

    Usporedba wiki softvera- Sljedeće tablice uspoređuju opće i tehničke informacije za brojne wiki softverske pakete. Sadržaj 1 Opće informacije 2 Ciljana publika 3 Značajke 1 4 Značajke 2 … Wikipedia

    Znanstveno pisanje neba- je izraz koji je skovao kognitivni znanstvenik Stevan Harnad koji opisuje kombinaciju više e-pošte i web arhive s temama kao što su news grupe, elektronička lista za slanje e-pošte, hiperpošta, mrežne vijesti ili internetski forum, povezani i sortirani po datumu,… … Wikipedia

    Softver za zajedničko odlučivanje- Softver za zajedničko odlučivanje (CDM) je softverska aplikacija ili modul koji koordinira funkcije i značajke potrebne za donošenje pravovremenih zajedničkih odluka, omogućujući svim relevantnim dionicima da sudjeluju u procesu. The... ... Wikipedia

Nedavno sam isprobao pthreads i bio sam ugodno iznenađen - to je proširenje koje dodaje mogućnost rada s više pravih niti u PHP-u. Bez emulacije, bez magije, bez lažiranja - sve je stvarno.



Razmišljam o takvom zadatku. Postoji skup zadataka koje je potrebno brzo izvršiti. PHP ima druge alate za rješavanje ovog problema, oni nisu spomenuti ovdje, članak je o pthreads.



Što su pthreads

To je sve! Pa skoro sve. Zapravo, postoji nešto što bi znatiželjnog čitatelja moglo uznemiriti. Ništa od ovoga ne radi na standardnom PHP-u kompiliranom sa zadanim opcijama. Da biste uživali u multithreadingu, morate imati omogućen ZTS (Zend Thread Safety) u vašem PHP-u.

PHP postava

Zatim, PHP sa ZTS-om. Ne obazirite se na veliku razliku u vremenu izvršavanja u usporedbi s PHP-om bez ZTS-a (37,65 naspram 265,05 sekundi), nisam pokušao generalizirati PHP postavke. U slučaju bez ZTS-a, imam omogućen XDebug na primjer.


Kao što vidite, kada se koriste 2 niti, brzina izvršavanja programa je otprilike 1,5 puta veća nego u slučaju linearnog koda. Kada koristite 4 niti - 3 puta.


Možete primijetiti da iako je procesor s 8 jezgri, vrijeme izvršenja programa ostalo je gotovo nepromijenjeno ako je korišteno više od 4 niti. Čini se da je to zbog činjenice da moj procesor ima 4 fizičke jezgre. Radi jasnoće, prikazao sam ploču u obliku dijagrama.


Sažetak

U PHP-u je moguće vrlo elegantno raditi s višenitnošću pomoću proširenja pthreads. To daje primjetan porast produktivnosti.

Oznake: Dodajte oznake

Ponekad je potrebno izvršiti nekoliko radnji istovremeno, na primjer, provjeriti promjene u jednoj tablici baze podataka i napraviti izmjene u drugoj. Štoviše, ako jedna od operacija (na primjer, provjera promjena) oduzima puno vremena, očito je da sekvencijalno izvršavanje neće osigurati uravnoteženje resursa.

Za rješavanje ove vrste problema, programiranje koristi multithreading - svaka operacija se nalazi u zasebnoj niti s dodijeljenom količinom resursa i radi unutar nje. Ovim pristupom svi će se zadaci obavljati zasebno i neovisno.

Iako PHP ne podržava multithreading, postoji nekoliko metoda za njegovu emulaciju, o čemu će biti riječi u nastavku.

1. Pokretanje nekoliko kopija skripte - jedna kopija po operaciji

//woman.php if (!isset($_GET["thread"])) ( system("wget ​​​​http://localhost/woman.php?thread=make_me_happy"); system("wget ​​​​http: //localhost/ woman.php?thread=make_me_rich"); ) elseif ($_GET["thread"] == "make_me_happy") ( make_her_happy(); ) elseif ($_GET["thread"] == "make_me_rich" ) (nađi_još jednu( ; )

Kada izvršimo ovu skriptu bez parametara, ona automatski pokreće dvije svoje kopije, s ID-ovima operacija ("thread=make_me_happy" i "thread=make_me_rich"), koje započinju izvršavanje potrebnih funkcija.

Na taj način postižemo željeni rezultat - dvije operacije se izvode istovremeno - ali to, naravno, nije multithreading, već jednostavno štaka za istovremeno obavljanje zadataka.

2. Put Jedija - korištenje ekstenzije PCNTL

PCNTL je proširenje koje vam omogućuje potpuni rad s procesima. Osim upravljanja, podržava slanje poruka, provjeru statusa i postavljanje prioriteta. Ovako izgleda prethodna skripta koja koristi PCNTL:

$pid = pcntl_fork(); if ($pid == 0) ( make_her_happy(); ) elseif ($pid > 0) ( $pid2 = pcntl_fork(); if ($pid2 == 0) ( find_another_one(); ) )

Izgleda prilično zbunjujuće, prođimo red po red.

U prvom retku “račvamo” trenutni proces (fork kopira proces uz očuvanje vrijednosti svih varijabli), dijeleći ga na dva procesa (tekući i dijete) koji se izvode paralelno.

Da bismo razumjeli nalazimo li se trenutno u podređenom ili matičnom procesu, funkcija pcntl_fork vraća 0 za dijete i ID procesa za majku. Stoga, u drugom retku gledamo $pid, ako je nula, onda smo u procesu dijete - izvršavamo funkciju, u suprotnom smo u majci (linija 4), zatim kreiramo drugi proces i na sličan način izvršiti zadatak.

Proces izvršavanja skripte:

Dakle, skripta stvara još 2 procesa djeteta, koji su njezine kopije i sadrže iste varijable sa sličnim vrijednostima. I koristeći identifikator koji vraća funkcija pcntl_fork, saznajemo u kojoj se niti trenutno nalazimo i izvodimo potrebne radnje.