Jump to content
php.lv forumi

Noderīgas funkcijas


Pentiums

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
Link to comment
Share on other sites

  • Replies 108
  • Created
  • Last Reply

Top Posters In This Topic

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)

Link to comment
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

Link to comment
Share on other sites

  • 3 weeks later...
(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");

Link to comment
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
Link to comment
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.

Link to comment
Share on other sites

  • 1 month later...

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 ^^

Link to comment
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
Link to comment
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
Link to comment
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));
}

Link to comment
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");

Link to comment
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?

Link to comment
Share on other sites

  • 1 month later...

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

Link to comment
Share on other sites

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...

×
×
  • Create New...