Article View: pl.comp.lang.php
Article #219834Wolno dzialajacy skrypt
From: maYk
Date: Thu, 23 Jul 2009 19:35
Date: Thu, 23 Jul 2009 19:35
104 lines
4662 bytes
4662 bytes
Witajcie, pracuje nad systemem zarzadzania kontaktami w ktorym mamy 3
najwazniejsze tabele:
- lista firm
- lista kontaktow
- lista statusow
No wiec, wyglada to tak. Mamy sobie tabelke o nazwie "lista kontaktow"
ktorej struktura wyglada mniej wiecej tak:
ID, company name, first name, last name, address, city, state, zip,
phone, product_status, status
Pole "company name" odpowiada numerem nazwie firmy w tabelce "lista
firm" a pole product_status to lancuch cyfr odzielonych przecinkiem
ktore odpowiadaja statusom w tabelce "lista statusow".
Kiedy wchodzimy na strone, skrypt zaczyna zliczac wszystkie rekordy z
tabelki "lista kontaktow" i wrzuca wszysko w multidimensional array
$company[], $last_name[], $statuses[].
$sql = "SELECT * FROM `_cms_groups_data WHERE `status` = '3'";
$result = mysql_query($sql, $dbh1) or die ("Could not get
results2.". mysql_error());
while ($wynik = mysql_fetch_array($result)) {
$companies[$inc]['ID'] = $wynik['company'];
$companies[$inc]['GROUP'] = $_SESSION['group'];
$companies[$inc]['company_name'] = pull_up_company_name
($_SESSION['group'], $wynik['company']);
$inc++;
$last_name[] = $wynik['last_name'];
$statuses[] = $wynik['product_status'];
}
Nastepnie, usuwamy wszystkie powielone rekordy w kazdej z tablic:
if (isset($companies)){
$companies = arrayUnique($companies);
foreach($companies as $key => $value) {
if($value == "") {
unset($companies[$key]);
}
}
$companies = array_values($companies);
$companies = array_msort($companies, array('company_name'=>array
(SORT_ASC,SORT_REGULAR)));
}
if (isset($last_name)){
$last_name = array_unique($last_name);
//REMOVE EMPTY RECORDS
foreach($last_name as $key => $value) {
if($value == "") {
unset($last_name[$key]);
}
}
$last_name = array_unique($last_name);
$last_name = array_values($last_name);
sort($last_name,SORT_STRING);
//$last_name = array_msort($last_name, array('last_name'=>array
(SORT_ASC,SORT_REGULAR)));
}
if (isset($statuses)){
$new_statuses = array();
for ($a=0;$a<count($statuses);$a++){
$new_statuses = array_merge(explode(",",$statuses[$a]),
$new_statuses);
}
$new_statuses = array_values(array_unique($new_statuses));
for ($a=0;$a<count($new_statuses);$a++){
if ($new_statuses[$a] != ""){
$list_statuses[$a]['ID'] = $new_statuses[$a];
$list_statuses[$a]['status_name'] = $pull_up_product_status_info
[$new_statuses[$a]];
}else {
unset($new_statuses[$a]);
}
}
if (isset($list_statuses)) {
$list_statuses = array_values($list_statuses);
$list_statuses = array_msort($list_statuses, array
('status_name'=>array(SORT_ASC,SORT_REGULAR)));
}
}
A nastepnie tworzymy z kazdej ze zmiennych pola wyboru HTML:
<select name=company>unikalna i posortowana lista firm</select>
<select name=last_name>unikalna i posortowana lista nazwisk</select>
<select name=status>unikalna i posortowana lista statusow</select>
Problem polega na tym ze wszystko to bardzo wolno dziala. Przy 1700
rekordow skrypt pojawia sie okolo 17 sekund. Zauwazylem ze kiedy usune
zawartosc kolumny product_status ktora najczesciej wyglada tak:
4,14,23,1,3,26 to czas wykonywania tego samego skryptu spada do 4
sekund. Bardzo prosze o porade, jak moge uczynic moj skrypt szybszym,
oraz jakich bledow unikac aby nie spotykac sie z takimi problemami w
przyszlosci.
Pozdrawiam
Michal
Technical Details
Message-ID:
<73ced6b9-b6ea-42c8-beb7-d3af06008365@26g2000yqk.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!26g2000yqk.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!26g2000yqk.googlegroups.com!not-for-mail From: maYk <m.gawrychowski@gmail.com> Newsgroups: pl.comp.lang.php Subject: Wolno dzialajacy skrypt Date: Thu, 23 Jul 2009 12:35:39 -0700 (PDT) Organization: http://groups.google.com Lines: 104 Message-ID: <73ced6b9-b6ea-42c8-beb7-d3af06008365@26g2000yqk.googlegroups.com> NNTP-Posting-Host: 75.127.181.202 Mime-Version: 1.0 X-Trace: posting.google.com 1248377739 14438 127.0.0.1 (23 Jul 2009 19:35:39 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 23 Jul 2009 19:35:39 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: 26g2000yqk.googlegroups.com; posting-host=75.127.181.202; posting-account=VUaMuQoAAADTDiCQs1_Lzd2gS1Olr4rF User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.1) Gecko/20090715 Firefox/3.5.1 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit