Jump to content
php.lv forumi
Pentiums

Noderīgas funkcijas

Recommended Posts

cerams Java atkal nedomās, ka es esmu baigi iedomīgs, ja es pateikšu, ka šādai tabulai varētu pielikt ENGINE=MEMORY, lai visas darbības notiktu daudz ātrāk ^^

 

P.S.

par koda optimizēšanu nebija neviena vārda, tāpēc pārāk stipri nesitiet :D

 

EDIT:

oo ir progress! :))

ja jau katrā requestā taisi delete, tad pēc PRIMARY KEY ieliekot arī INDEX (last_seen), būtu pavisam ideāli ;)

 

EDIT2:

ejam tālāk ;)

šis ir baigi viegli un attiecas vairāk uz function usage

$data = mysql_fetch_assoc(mysql_query("SELECT COUNT(*) FROM lietotaji_online"));
return (int)$data['COUNT(*)'];
->
return (int)mysql_result(mysql_query("SELECT COUNT(*) FROM lietotaji_online"), 0);

tātad kad ar while iet cauri daudzām rindām (arī kad paņem vienu rindu ar daudzām kolonnām), tad lieto kādu no mysql_fetch_object() mysql_fetch_assoc() mysql_fetch_row() mysql_fetch_array(), bet ja vajag paņemt tikai vienu vērtību, kā tas ir šajā gadījumā, tad mysql_result() ftw

 

EDIT3:

un tad pie reizes no manas puses arī final piezīme

ja tiešām gribi pacelt šo funkciju uz next level, tad sql DELETE taisa tikai 1x pa minūti (for performance), jo heavy noslogotām lapām ir ļoti daudz hitu katru minūti, taču info par to, kad kāds aiziet off nav tik svarīga. tb ja vecie dati tiks patīrīti tikai reizi minūtē, nekāda skāde no tā neradīsies ;) taču serverim gan paliks mazliet vieglāk :)) tas tā paliek aktuāli, ja vnlaicīgi pa lapu klikšķinās šākot no pāris simtiem apmeklētāju ^^

 

vsp pie šāda noslogojuma ir diezgan aktuāli arī kešot kontentu (lai samazinātu sql SELECT skaitu). priekš tam izmanto līdzīgu tabulu Cache (Id, Data, ExpiryDate), kas arī ir ENGINE=MEMORY. bet tā jau ir tēma citai pasaciņai...

Edited by 2easy

Share this post


Link to post
Share on other sites

br2nl - nl2br reverss

function br2nl($string) {
return preg_replace('/\<br(\s*)?\/?\>/i', "\n", $string);
}

Share this post


Link to post
Share on other sites

Ja gribas kaut ko nokodēt, lai pēc tam var arī atkodēt :)

 

<?php
   define('SALT', 'KAUTkaadsR4ndomS4aal5');

   function encrypt($text){
       return trim(base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SALT, $text, MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND))));
   }

   function decrypt($text){
       return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, SALT, base64_decode($text), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND)));
   }

echo "Nokodēts: " . encrypt("Maikls Dzheksons IR MIRIS!!!") . "<br/>";
echo "Atkodēts: " . decrypt(encrypt("Maikls dzheksons IR MIRIS!!!"));
?> 

 

Radās te pašam vajadzība glabāt paroles db ar iespēju atkodēt abos virzienos >) (ne ļaunos nolūkos :D)

Share this post


Link to post
Share on other sites

:) es nezinu cik jums tas ļoti interesē, bet lūk shell kodiņš linux ūbiem kuriem ir nepieciešams zināt "draugiem.lv" online cilveku skaitu :)

un glabat to skaitu faila ik pec 30 sek

until [ 1 -eq 2 ]
do
wget www.draugiem.lv -O /tmp/dr.txt
sed -n '/<div id=\"usrcnt\">/,/<\/div>/p' /tmp/dr.txt | sed -e 's/.*<div id=\"usrcnt\">//' -e 's/<\/div>.*//' -e 's/.*<br \/>.*//g' -e 's/Šobrīd portālā://g' -e 's/\t//g' -e 's/ //g' | sed -e :a -e '$!N; s/\n//g; ta' >>/tmp/drgraph.txt 
sleep 30
done

ja ir vēlme pēc tam var uztaisīt funkciju kura salasa visus rezultātus un padod googlem,

http://chart.apis.google.com/chart?cht=lc&chd=t: ... seit visi dati ar komatu atdaliti &chs=660x450&chl=S%C4%81kums|Beigas&chds=0,10000

 

piemers: http://chart.apis.google.com/chart?cht=lc&chd=t:8540,5839,1245,6345,623,6324,47,632,53,632,5,532,3263,6436,6325&chs=660x450&chl=S%C4%81kums|Beigas&chds=0,10000

Share this post


Link to post
Share on other sites
(empty($sLapa)) ? $sLapa = "sakums" : $sLapa = $sLapa;
       $pages = array(
               "sakums"            =>                "citati.php",
               "kontakti"          =>                "kontakti.php",
               "info"              =>                "info.php",
               "ziedotlaiku"       =>                "ziedotlaiku.php",
               "zinas"             =>                "zinas.php",
               "unapproved"        =>                "unapproved.php"
       );

$file_path = "./mape/".$pages[$sLapa];
array_key_exists($sLapa, $pages) ? include $file_path : include ("./mape/citati.php");

Share this post


Link to post
Share on other sites

ar to ternary operatora lietošanu ir tā, ka lai arī php atļauj iekšpusē veikt piešķiršanu, no lietojamibas viedokļa labāk lai piešķiršana ir 1x, un tas ternary operators tikai izdod vērtību

 

piemēram, šādi būtu "labāk" (imho)

$sLapa = empty($sLapa) ? "sakums" : $sLapa;  // vsp šādā gadījuma ternary op ir overkill. vnkāršāk ir if (empty($sLapa)) $sLapa = "sakums";

include array_key_exists($sLapa, $pages) ? "./mape/".$pages[$sLapa] : "./mape/citati.php";

anyway, forši, ka pats izdomāji savu web logic kontrolieri. un ka centies lietot tādu novorotu kā ternary op ;)

good job ^^

Edited by 2easy

Share this post


Link to post
Share on other sites

Kavacky, ja tā, tad lūdzu pielietojuma piemērus studijā! :)

Kādreiz rakstīju kaut ko šādu un bija tīri pārskatāmi:

!isset($objectType) ? $objectType = 0 : doNothing();

 

Tagad esmu kko mainījis piegājienā un neatceros, kad šitā būtu darījis iepriekšējo reizi.

Share this post


Link to post
Share on other sites

Kādreiz rakstīju kaut ko šādu un bija tīri pārskatāmi:

!isset($objectType) ? $objectType = 0 : doNothing();

lol

sry par "piesiešanos", bet ternary operators tam nav domāts :D

kr4 tas ir good example of ternary operator misuse

 

šādos gadījumos normāli lieto parastu if

if (!isset($objectType)) $objectType = 0;

ja tomēr par katru cenu gribās ternary operatoru, tad var darīt arī tā

$objectType = isset($objectType) ? $objectType : 0;

 

Tagad esmu kko mainījis piegājienā un neatceros, kad šitā būtu darījis iepriekšējo reizi.

vo pareizi ^^

Share this post


Link to post
Share on other sites

Tādu "parasto if" man būtu kauns rakstīt. Neredzu nevienu iemeslu, kāpēc daudz sakārtotāks ( šādām īsām darbībām ) ternary operators būtu jāsauc "ja par katru cenu gribas".

Edited by Kavacky

Share this post


Link to post
Share on other sites

Tādu "parasto if" man būtu kauns rakstīt.

lol, man gan ir vnkārši izvēlēties: jo mazāk jāraksta, jo labāk. tipa saskaitu baitus vai pielieku lineālu pie monitora un bez nekāda kauna izvēlos īsāko :D:D:D

Edited by 2easy

Share this post


Link to post
Share on other sites

Standarta teksta apstrāde

function tekstaApstrade($s, $length = 0) {
return stripslashes(htmlspecialchars(($length > 0 ? (mb_strlen($s) > $length ? mb_substr($s, 0, $length).'...' : $s) : $s), ENT_QUOTES));
}

Share this post


Link to post
Share on other sites

function draw_pages($count, $perpage, $atlapa, $offset = 5){
$pages = ceil($count/$perpage);
if($pages<2){
	return '';
}
$r = '<div id="pagination">';
$page = (empty($_GET['lapa']) || $_GET['lapa']<2) ? 1 : $_GET['lapa'];
$first = $page >= $offset+1 ? $page-$offset : 1;
$last = $page <= $pages-$offset ? $page+$offset : $pages;
if($page>1){
	$r.= sprintf('
	   <div class="paginationbutton">
       <div class="paginationleft"></div>
       <div class="paginationmiddle"><a href="/%s/1/#quotewrap">«</a></div>
       <div class="paginationright"></div>
     </div>
     <div class="paginationbutton">
       <div class="paginationleft"></div>
       <div class="paginationmiddle"><a href="/%s/%d/#quotewrap"><</a></div>
       <div class="paginationright"></div>
     </div>',$atlapa, $atlapa, $page-1);
}
for($i=$first;$i<=$last;$i++){
	$r.= sprintf('
     <div class="paginationbutton%s">
       <div class="paginationleft"></div>
       <div class="paginationmiddle"><a href="/%s/%d/#quotewrap">%d</a></div>
       <div class="paginationright"></div>
     </div>', $page==$i ? 'active' : '', $atlapa, $i, $i);
}
if($page<$pages){
	$r.= sprintf('
	   <div class="paginationbutton">
       <div class="paginationleft"></div>
       <div class="paginationmiddle"><a href="/%s/%d/#quotewrap">></a></div>
       <div class="paginationright"></div>
     </div>
     <div class="paginationbutton">
       <div class="paginationleft"></div>
       <div class="paginationmiddle"><a href="/%s/%d/#quotewrap">»</a></div>
       <div class="paginationright"></div>
     </div>', $atlapa, $page+1, $atlapa, $pages);
}
$r.= '</div>';
return $r;

 

defektologa pagination nedaudz pielabots un taisīts priekš mana mod rewrite..

izsaucas funkcija šadi

    echo draw_pages($count->c, $perpage,"sakums");

Share this post


Link to post
Share on other sites

Samazina attēlu, lai iekļautos norādītajos izmēros.

Pārraksta samazināto pa virsu orģinālajam.

 

	function imageResize($path,$max_width=300,$max_height=400){
	if(!file_exists($path)){
		return false;
	}

	$max_height = (int)$max_height;
	$max_width = (int)$max_width;

	$src_img = imagecreatefromjpeg($path);

	$x = imagesx($src_img);
	$y = imagesy($src_img);

	if(($x >= $y) && ($x > $max_width)){
		$picsize = $max_width; 
		$new_w = imagesx($src_img);
		$new_h = imagesy($src_img);
		$aspect_ratio = $new_h / $new_w;
		$new_w = $picsize;
		$new_h = abs($new_w * $aspect_ratio);
	}

	if(($y > $x) && ($y > $max_height)){
		$picsize = $max_height; 
		$new_w = imagesx($src_img);
		$new_h = imagesy($src_img);
		$aspect_ratio = $new_w / $new_h;
		$new_h = $picsize;
		$new_w = abs($new_h * $aspect_ratio);
	}

	$dst_img = imagecreatetruecolor($new_w,$new_h);
	imagecopyresampled($dst_img,$src_img,0,0,0,0,$new_w,$new_h,imagesx($src_img),imagesy($src_img));
	return imagejpeg($dst_img, $path, 80);
}

 

 

Eu kur shis scripts iisti ir jakopē, lai vinsh stradatu?

Share this post


Link to post
Share on other sites

//te iemetam funkciju....

//te to izsaucam...
imageResize('img/bildeKoSamazinam.jpg',100,200);

 

iesaku izglītoties PHP: Functions

Edited by Pentiums

Share this post


Link to post
Share on other sites

Dabounam atbrīvojušos domēnus no nic.lv

 

Piekonfigurējam: $nic_login, $nic_passw, $mail_to

 

Demonstrē:

*) cURL izmantošanu vairākiem pieprasījumiem ar ielogošanos kādā sistēmā

*) DOM un DOMXPath izmantošanu HTML parsēšanai

 

http://paste.php.lv/bc0b11730ea8c2987cce426903c5a00a?lang=php

 

Crontabā iekšā, lai izpildās biki pēc 00:00

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×