| Author |
Message |
|
registered
Level 3 (75 %)
Posts: 5 |
ID #385
Hallöchen,
bin neu hier und möchte als erstes mal sagen. coole Extension. Viel, viel Arbeit, die Martin da reingesteckt hat.
Ich habe das Problem eine Scriptfehlers 500 und wenn ich die Scriptlimits erhöhe wird die Suche einfach durch den Server beendet. Beim Debuggen habe ich festgestellt, dass die vcards schon beim listing bzw. der Suche ausgelesen wird. Ich habe sie in der function getItem im dataoutput als markerarray auskommentiert und sihe da, es läuft. wenn ich die email auch noch rausmache, wirds noch schneller. man sieht dann den Marker aber keine Link mehr. Soweit kein Problem, weil ich kann ja zwei unterschiedliche Templates verwenden. eins mit und eins ohne Marker für die vcard. Das Problem ist allerdings, dass die single view jetzt auch ohne vcard dargestellt wird, obwohl bei der function displaySingle die vcard nochmal abgefragt wird. kann man das nicht so ändern, dass die vcard und der rest erst dann abgefragt werden, wenn ich auf den link oder auf mehr klicke? Dann geht die Abfrage auch schneller.
Grüße
Michael
|
20.04.10, 20:42 |
|
|
Martin Hesse
Level 9 (60 %)
Posts: 154 |
ID #386
Hallo,
danke für die Blumen. Die vCard wird auch erst dann generiert, wenn man auf den Link klickt. Sozusagen "on fly". Was ich dir raten würde, mal in deine PHP Error-Logs schauen auf dem Server und gucken, was er dir sagt. Vielleicht kommen wir damit weiter.
Gruß,
Martin
|
20.04.10, 23:37 |
|
|
registered
Level 3 (75 %)
Posts: 5 |
ID #387
Hallo Martin,
war das wieder ein Tag heute. Sorry, wenns jetzt ein bischen mehr wird. Insbesondere der Zeitdauervergleich zw. [details] und [vcard] ist interessant.
Der sql Debugger (debug_mysql_db) wirft logndes raus:
$query
SELECT
tx_mhbranchenbuch_firmen.*,
k.name AS category
FROM
tx_mhbranchenbuch_firmen tx_mhbranchenbuch_firmen
JOIN tx_mhbranchenbuch_kategorien k ON k.uid = tx_mhbranchenbuch_firmen.kategorie
WHERE
tx_mhbranchenbuch_firmen.pid IN (8)
AND ((tx_mhbranchenbuch_firmen.firma LIKE '%Begriff%' OR tx_mhbranchenbuch_firmen.keywords LIKE '%Begriff%' OR tx_mhbranchenbuch_firmen.adresse LIKE '%Begriff%')) AND FIND_IN_SET(tx_mhbranchenbuch_firmen.ort,'7,3474,3499,3617,4720,4765,5312,5364')
AND tx_mhbranchenbuch_firmen.deleted=0 AND tx_mhbranchenbuch_firmen.hidden=0 AND (tx_mhbranchenbuch_firmen.starttime<=1271669880) AND (tx_mhbranchenbuch_firmen.endtime=0 OR tx_mhbranchenbuch_firmen.endtime>1271669880)
ORDER BY
tx_mhbranchenbuch_firmen.firma ASC
$query SELECT *, DATEDIFF(NOW(),tstamp) AS daydiff FROM link_cache WHERE params='a:3:{s:5:\"cHash\";s:10:\"71763a2c74\";s:2:\"id\";s:1:\"9\";s:29:\"tx_mhbranchenbuch_pi1[detail]\";s:4:\"5047\";}'
num_rows() 1
affected_rows() 1
insert_id() 0
miliseconds 0.242
------------
$query SELECT *, DATEDIFF(NOW(),tstamp) AS daydiff FROM link_cache WHERE params='a:3:{s:2:\"id\";s:1:\"9\";s:8:\"no_cache\";s:1:\"1\";s:28:\"tx_mhbranchenbuch_pi1[vcard]\";s:4:\"5047\";}'
num_rows() 1
affected_rows() 1
insert_id() 0
miliseconds 116.344
------------
$query SELECT *, DATEDIFF(NOW(),tstamp) AS daydiff FROM link_cache WHERE params='a:3:{s:5:\"cHash\";s:10:\"71763a2c74\";s:2:\"id\";s:1:\"9\";s:29:\"tx_mhbranchenbuch_pi1[detail]\";s:4:\"5047\";}'
num_rows() 1
affected_rows() 1
insert_id() 0
miliseconds 0.241
------------
Regelmäßig ist Zeitverzögerung bei der vcard "links von der 0" relativ hoch. Im Folgenden sogar sehr hoch.
$query
SELECT
tx_mhbranchenbuch_firmen.*,
k.name AS category
FROM
tx_mhbranchenbuch_firmen tx_mhbranchenbuch_firmen
JOIN tx_mhbranchenbuch_kategorien k ON k.uid = tx_mhbranchenbuch_firmen.kategorie
WHERE
tx_mhbranchenbuch_firmen.pid IN (8)
AND ((tx_mhbranchenbuch_firmen.firma LIKE '% derVornameEinerPerson %' OR tx_mhbranchenbuch_firmen.keywords LIKE '% derVornameEinerPerson %' OR tx_mhbranchenbuch_firmen.adresse LIKE '% derVornameEinerPerson %' ) AND ( tx_mhbranchenbuch_firmen.firma LIKE '% derNachnameEinerPerson %' OR tx_mhbranchenbuch_firmen.keywords LIKE '% derNachnameEinerPerson %' OR tx_mhbranchenbuch_firmen.adresse LIKE '% derNachnameEinerPerson %'))
AND tx_mhbranchenbuch_firmen.deleted=0 AND tx_mhbranchenbuch_firmen.hidden=0 AND (tx_mhbranchenbuch_firmen.starttime<=1271668380) AND (tx_mhbranchenbuch_firmen.endtime=0 OR tx_mhbranchenbuch_firmen.endtime>1271668380)
ORDER BY
tx_mhbranchenbuch_firmen.firma ASC
num_rows() 2
affected_rows() 2
insert_id() 0
miliseconds 814.952
=====gekürzt==========
$query SELECT *, DATEDIFF(NOW(),tstamp) AS daydiff FROM link_cache WHERE params='a:3:{s:2:\"id\";s:1:\"9\";s:8:\"no_cache\";s:1:\"1\";s:28:\"tx_mhbranchenbuch_pi1[vcard]\";s:5:\"16623\";}'
num_rows() 1
affected_rows() 1
insert_id() 0
miliseconds 226.36
$query SELECT *, DATEDIFF(NOW(),tstamp) AS daydiff FROM link_cache WHERE params='a:3:{s:2:\"id\";s:1:\"9\";s:8:\"no_cache\";s:1:\"1\";s:28:\"tx_mhbranchenbuch_pi1[vcard]\";s:3:\"918\";}'
num_rows() 1
affected_rows() 1
insert_id() 0
miliseconds 128.801
=====================
Diese Ausgabe mit zwei Ergebnissen dauert fast vier Sekunden.
Grüße
Michael
This Post was edited 3 times so far, last change on 21. April 10
|
21.04.10, 22:31 |
|
|
Martin Hesse
Level 9 (60 %)
Posts: 154 |
ID #389
Hallo Michael,
bist du sicher das du die richtigen DB-Abfragen hast. Das sieht mir mehr wie die Suche aus, anstelle von den Details bzw. der vCard, ich werde aber nochmal im Code schauen.
Ich melde mich.
Gruß,
Martin
|
29.04.10, 19:14 |
|
|
balmung
Level 6 (45 %)
Posts: 16 |
ID #390
Hallöchen Michael,
hatte dasselbe Problem. Ich gehe mal davon aus, dass du zudem CoolUri verwendest. So ist das zumindest bei mir. CoolUri braucht allein schon einen Anteil der Zeit.
Ich konnte insgesammt drei Sekunden im Durchschnitt pro Ergebnis ermitteln.
Folgende Lösung ist vllt. auch für dich Martin interessant bei der V2 Entwicklung.
Die Abfragezeit lässt sich aber durch hinzufügen von Indizes relativ einfach verringern. Dazu musst du allerdings die Spaltentypen ändern.
Hier mal ein Beispiel für die in der Suchabfrage relevanten Spalten:
kategorie INDEX kategorie
ort INDEX ort
firma INDEX firma
keywords INDEX keywords
adresse INDEX adresse
deleted INDEX deleted
hidden INDEX hidden
starttime INDEX starttime
endtime INDEX endtime
Aus Keywords, firma, ort habe ich varchar (255) gemacht. Aus kategorie varchar (40).
Entsprechend solltest du auch die anderen Tabellen ändern.
@Martin
Die Anordnung der Suchfelder würde ich vertauschen, so dass zuerst das "Wer/Was" kommt. Ist "ergonomischer".
Grüße
This Post was edited 1 times so far, last change on 30. April 10
|
30.04.10, 13:56 |
|
| Register or login to reply |
|