Jump to content
php.lv forumi

HipHop for PHP


rATRIJS
 Share

Recommended Posts

Sīkāk par šo 'projektu' var palasīt šeit:

http://developers.facebook.com/news.php?blog=1&story=358

 

Īsumā - PHP koda pārtūlkošana un optimizēšana uz C++ kodu, lai tas būtu mazāk 'rijīgs'.

 

Kādas ir Jūsu domas par to? Ir tas kaut kā vērts vai nav? Manā darba vietā, mēs šobrīd izmantojam XCache un domājam notestēt šo HipHop'u, lai redzētu uzlabojumus/neuzlabojumus.

Link to comment
Share on other sites

HipHop for PHP: Move Fast

 

Īsumā:

Facebook katru mēnesi apstrādā 400 miljardi PHP lapu pieprasījumu, tāpēc ātrdarbība ir viens no viņu attīstības stūrakmeņiem.

Tā kā PHP ir ātri apgūstama un tai ir pieejams liels jaunu un talantīgu programmētāju skaits, tad Facebook tā vietā, lai pilnībā pārrakstītu savu kodu citā valdoā, izvēlējās interesantu ceļu - izveidot automātisku PHP koda pārveidotāju par C++ kodu.

Link to comment
Share on other sites

  • 2 weeks later...

Ehh - es jau domaaju, ka kaut ko ne taa uzrakstiiju, ka neapstiprina :)

 

Lai nu kaa - HipHop, droshi vien, ljoti labi iet kopaa ar XHP, kas arii ir jauns Facebook izgudrojums :)

 

Links:

 

Buutiibaa tas atljauj pa taisno PHP kodaa rakstiit XML un xHTML (kas buutiibaa ir tas pats).

 

Taatad shis:

 

<?php
if(true) {
   ?>
   <p>Kaut kas patiess</p>
   <?php
}
else {
   ?>
   <p>Kaut kas nepatiess</p>
   <?php
}
?>

 

kljuutu par sho:

 

 

<?php
if(true) {
   echo
   <p>Kaut kas patiess</p>;
}
else {
   echo
   <p>Kaut kas nepatiess</p>;
}
?>

 

No vienas puses interesanti, un dazhos gadiijumos noderiigi, tachu es parasti template'oju visu taa kaa man tas noderiigi nebuutu. Kaa arii uz plika PHP tas buutu ljoti leeni :)

Link to comment
Share on other sites

ok, tā ideja no php ģenerēt c++ un uz servera darbināt machine code, protams, ir apsveicama. ja kompilēts c++ kods izpildās 10x ātrāk nekā interpretējams php kods, tad iespējams ir izdevīgāk uztaisīt tādu translatora softu nekā nopirkt 10x jaudīgākus dzelžus

 

bet par to XHP man gan smiekli nāk. taisīt kko tādu tikai tāpēc, lai stringi nebūtu jāliek apostrofos un vēl htmlspecialchars() automātiski izsauktos. nju nez. man liekas, ka cilvēki bik pārcenšas. php jau tā ir tik vienkārša valoda, cik vien vienārša var būt, un salikt multi line pēdiņas un izsaukt htmlspecialchars() jau nu gan var

 

turklāt to viņu bloated, gļukaino un nevalīdo piemēru

<?php
if ($_POST['name']) {
?>
   <span>Hello, <?=$_POST['name']?>.</span>
<?php
} else {
?>
   <form method="post">
   What is your name?<br>
   <input type="text" name="name">
   <input type="submit">
   </form>
<?php
}

es rakstītu šādi:

if (isset($_POST['name']) && $_POST['name']) echo '<span>Hello, ' . htmlspecialchars($_POST['name']) . '.</span>';
else echo '<form action="" method="post">
What is your name?<br />
<input type="text" name="name" />
<input type="submit" />
</form>';

īsi, kompakti un tikpat vienkārši ;)

 

 

EDIT: vsp man būtu pat vēl mazāk jāraksta, jo es ērtības labad izmantoju pāris standarta shortcut funkcijas:

function arg($k) {return isset($_POST[$k]) ? $_POST[$k] : (isset($_GET[$k]) ? $_GET[$k] : null);}  // web applikācijas arguments - izdod attiecīgā post/get parametra vērtību
function hx($s) {return htmlspecialchars($s);}  // html encode

kā rezultātā būtu tik vien koda:

if (arg('name')) echo '<span>Hello, ' . hx(arg('name')) . '.</span>';
else echo '<form action="" method="post">
What is your name?<br />
<input type="text" name="name" />
<input type="submit" />
</form>';

Edited by 2easy
Link to comment
Share on other sites

2easy, XHP lielākā problēma ir ātrdarbība ( http://toys.lerdorf.com/archives/54-A-quick-look-at-XHP.html ) , pats koncepts ir pat salīdzinoši ļoti labs. Ja tu uzmanīgāk palasīsi XHP dokumentāciju, tad redzēsi, ka viņi jau PHP parsēšanas laikā nodrošinās pret iespēju, ka tu varētu uzrakstīt nevalīdu HTML:

 

One advantage that XHP has over string construction is that it enforces correct markup structure at compile time. That is, the expression $foo = <h1>Header</h2>; is not a valid expression, because you can not close an h1 tag with a /h2. When building large chunks of markup it can be difficult to be totally correct. With XHP the compiler now checks your work and will refuse to run until the markup is correct.

 

Iespējams, ka XHP ātrdarbības problēmas var mēreni izskaust tieši izmantojot HipHop ( ne velti abi risinājumi ir parādījušies plašākai publikai praktiski vienlaicīgi )

 

+ tur ir vēl pāris interesantas iespējas, kuras varētu būt dikti ērtas pat tādam lieko simbolu necietējam, kā tev:

$countInDaTable = mysql_fetch_row(mysql_query('select count(*) from table'))[0];

PHP currently only allows you to use the [] operator on variables. This is just a stupid restriction so I figured while I was mucking around with PHP’s syntax I might as well fix this. In XHP when you use the [] operator on something that would be a syntax error in vanilla PHP it will rewrite it into a call to __xhp_idx(). For instance, foo()['bar'] will become __xhp_idx(foo(), 'bar'). __xhp_idx is a C function defined in the PHP extension which behaves identically to the [] operator.
Link to comment
Share on other sites

+ tur ir vēl pāris interesantas iespējas, kuras varētu būt dikti ērtas pat tādam lieko simbolu necietējam, kā tev:

$countInDaTable = mysql_fetch_row(mysql_query('select count(*) from table'))[0];

lol, priekš tam ir mysql_result() ftw

$countInDaTable = mysql_result(mysql_query('select count(*) from table'), 0);

RTFM

 

okok, piekrītu, ka ja visur varētu pielikt [], tā protams būtu fīča

js jau no paša sākuma tā var, un tas ir ērti/ātri un tātad pareizi ;)

Edited by 2easy
Link to comment
Share on other sites

Tas no Kaklz puses bija tikai piemeers.

 

Tik pat labi tas vareetu buut shaads:

 

$s = 'mans_kruts_strings';
echo 'Mans strings ir ' . explode('_', $s)[1];

 

Jaa protams, vienmeer visu var rakstiit savaadaak:

 

$s = 'mans_kruts_strings';
echo 'Mans strings ir ' . array_pop('_', $s, -1);

 

bet, IMO, tas ir labs uzlabojums, kuram atrastu pielietojumu. Protams, gan es nelietoshu XHP tikai taadeelj :D

 

P.S.

 

btw echo'ot HTML kaa stringu vajadzeetu aizliegt :)

 

echo '<div class="omg">' .
'<p>omg</p>' .
'</div>'; //DELIIIIIIIT!!!!!

Edited by rATRIJS
Link to comment
Share on other sites

Tas no Kaklz puses bija tikai piemeers.

es tač to saprotu ;)

 

bet, IMO, tas ir labs uzlabojums, kuram atrastu pielietojumu

jau pateicu, ka tam 100% piekrītu

 

btw echo'ot HTML kaa stringu vajadzeetu aizliegt :)

lol, why?

 

un kāpēc tu katru rindu liec savā stringā???

kad var vnkārši

echo '<div class="omg">
   <p>omg</p>
   </div>';

btw, prikols tāds, ka js savukārt tā nevar :P tur gan rindas beigās vajadzētu arī stringu finišēt un likt + lai nākamajā rindā sāktu no jauna. šajā ziņā atkal php ftw :D

Edited by 2easy
Link to comment
Share on other sites

2 2easy: pirms edita tavs teksts bija nedaudz savadaks :P

 

Kaadeelj neizvadiit kaa stringu: gruutaaks pieraksts. Sintakses hailaiteri, parasti, nestraadaa uz taadiem. Indent'ings buus nedaudz gljukains (gan rakstot, gan skatoties source). Un vispaar templates ir ruljit!!! :P

Link to comment
Share on other sites

2 2easy: pirms edita tavs teksts bija nedaudz savadaks :P

true ^^

bet tu to varēji pamanīt iekš preview, ja jau postoji pēc mana edita

 

Kaadeelj neizvadiit kaa stringu: gruutaaks pieraksts. Sintakses hailaiteri, parasti, nestraadaa uz taadiem. Indent'ings buus nedaudz gljukains (gan rakstot, gan skatoties source). Un vispaar templates ir ruljit!!! :P

"gruutaaks pieraksts" - kā kuram :D

 

"Sintakses hailaiteri" - personally i dont need it for html (its 2 simple 4 me :D). kr4 man pilnīgi pietiek ar php sintakses hailaitošanu

 

"Indent'ings buus nedaudz gljukains" - ka tik ne tā. indent taču var likt!

anyway, who cares par source, ko ģenerē php? kamēr nav jārāda kkādā html sources skaistumkonkursā, tikmēr būs labi arī tāpat :P

 

"Un vispaar templates ir ruljit!!! :P" - njaa kārtējo reizi pierādās tas, ka katram savi darba instrumenti vairāk patīk ;)

Link to comment
Share on other sites

  • 6 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

×
×
  • Create New...