abonnement Unibet Coolblue Bitvavo
pi_32373934
ik kreeg laat op mij eigen forumje (phpbb plus mysql)

plots de volgende foutmelding als ik iets wou zoeken

de volgende foutmelding verschijnt dan :

SQL Error : 1153 Got a packet bigger than 'max_allowed_packet'

die foutmelding kreeg ik dan als ik gebruik wou maken van de zoek functie

uiteindlijk kom ik het oplossen met dit

de volgende foutmelding verschijnt dan :

http://dev.mysql.com/doc/refman/5.0/en/packet-too-large.html

maar ik vraag me wel af, hoe het kan dat een forum dat al lang goed loopt zo van de een op andere dag die foutmelding geeft.

heeft iemand van jullie ervaring met deze foutmelding?

ik zou toch graag de oorzaak willen achterhalen
pi_32376397
quote:
Op vrijdag 18 november 2005 13:57 schreef JeRa het volgende:

[..]

Heb je het nu over allow_url_fopen? Dat heeft verder weinig te maken met de SMTP-instelling in php.ini of hoe PHP die afhandelt, dus dat lijkt me onwaarschijnlijk
Was ff aan het werk vandaag, vandaar de late reactie.

maar ik heb een testfile gemaakt die de onderstaande fout geeft:

Warning: mail(): Failed to connect to mailserver at "mail.home.nl" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in \\fileserver\Websites\test\mail.php on line 14

Dit is de bijbehorende code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$email_from
= "Info" ;
$returnpath_mail = "test@home.nl";
$email1 = "test@zonnet.nl";
$onderwerp = "Onderwerp";
$msg = "<html>\n";
$msg.= "<head>\n";
$msg.= "<META http-equiv=Content-Type content='html; charset=iso-8859-1'>\n";
$msg.= "</head>\n\n";

$msg .= "Hallo\n";
$msg .= "</body></html>";
$header = "From: $email_from<$returnpath_mail>\nReturn-path: $returnpath_mail\nContent-Type: text/html; charset=iso-8859-1";
mail($email1,$onderwerp,$msg, $header);
?>


Code werkt overal goed. behalve thuis met @home.
  vrijdag 18 november 2005 @ 16:35:50 #78
104583 cyberstalker
Een krachtig neen!
pi_32376439
En als je er mail.mars.home.nl van maakt?
Hope for the best, prepare for the worst.
pi_32378327
quote:
Op vrijdag 18 november 2005 14:10 schreef cyberstalker het volgende:

[..]

Ik weet het nie precies, maar als je die instelling uit hebt staan, kun je heel veel dingen niet. Sockets openen lukt bijvoorbeeld ook niet.
Maar mail() wordt afgehandeld door PHP zelf, en het lijkt me sterk dat PHP tegen z'n eigen beveiligingen aanloopt

@mooya
quote:
Op vrijdag 18 november 2005 16:35 schreef cyberstalker het volgende:
En als je er mail.mars.home.nl van maakt?
Wat hij zegt sowieso zou je eens naar je mailinstellingen in Outlook moeten kijken, ben je er zeker van dat daar 'mail.home.nl' op poort 25 staat, niet-geauthenticeerd?
pi_32378416
werkt ook niet..

had ik ook al geprobeerd,

en outlook is normaal ingesteld zonder authenticatie
pi_32378441
quote:
Op vrijdag 18 november 2005 15:14 schreef Jojo_ut_Grun het volgende:
ik kreeg laat op mij eigen forumje (phpbb plus mysql)
...
SQL Error : 1153 Got a packet bigger than 'max_allowed_packet'
...
die foutmelding kreeg ik dan als ik gebruik wou maken van de zoek functie
Heb je geupgrade naar de laatste versie van phpBB? Heb je beheer over die MySQL server of heb je 'm op een server staan die niet van jou is? De foutmelding slaat meestal op een pakket dat naar MySQL is verzonden en groter is dan de limiet die ingesteld is in MySQL. Dit duidt dus op een defecte zoekquery (phpBB) of een veel te lage limiet (MySQL).

edit: een waarschijnlijke fout zou een te grote INSERT kunnen zijn voor de zoekresultaten. Het is namelijk mogelijk om in één query vele waarden tegelijk toe te voegen, dus misschien ligt het daaraan.
pi_32378475
quote:
Op vrijdag 18 november 2005 17:45 schreef mooya het volgende:
werkt ook niet..

had ik ook al geprobeerd,

en outlook is normaal ingesteld zonder authenticatie
Ik blijf het knap vinden dat Outlook Express kan connecten met mail.home.nl:25 en jij met telnet niet. Als we er nou eens achter konden komen waaróm niet Outlook Express gaat niet via een proxy?
pi_32382168
quote:
Op vrijdag 18 november 2005 17:47 schreef JeRa het volgende:

[..]

Ik blijf het knap vinden dat Outlook Express kan connecten met mail.home.nl:25 en jij met telnet niet. Als we er nou eens achter konden komen waaróm niet Outlook Express gaat niet via een proxy?
Ik snap er ook niks van
En Outlook (2003) gebruikt ook geen proxy...

misschien dat iemand een handleiding heeft hoe je in IIS6 een SMTP connector configureerd, want dat heb ik ook al geprobeert. Dan kan ik Localhost gebruiken als mailserver
pi_32385420
quote:
Op vrijdag 18 november 2005 17:46 schreef JeRa het volgende:

[..]

Heb je geupgrade naar de laatste versie van phpBB? Heb je beheer over die MySQL server of heb je 'm op een server staan die niet van jou is? De foutmelding slaat meestal op een pakket dat naar MySQL is verzonden en groter is dan de limiet die ingesteld is in MySQL. Dit duidt dus op een defecte zoekquery (phpBB) of een veel te lage limiet (MySQL).

edit: een waarschijnlijke fout zou een te grote INSERT kunnen zijn voor de zoekresultaten. Het is namelijk mogelijk om in één query vele waarden tegelijk toe te voegen, dus misschien ligt het daaraan.
ik heb de laatste versie van phpbb

de mysql database staat op de server van mijn hosting bedrijf

het probleem lijkt dus opgelost door de mysql , het hosting bedrijf heeft de

my.cnf geedit.

maar mijn vraag is meer.. ho ehet kan dat een forum heel lang zonder problemen loopt
en dan plots de zoekfunctie niet meer wil, je die foutmelding krijgt

zou de database te groot worden
pi_32393628
quote:
Op vrijdag 18 november 2005 21:59 schreef Jojo_ut_Grun het volgende:

[..]

ik heb de laatste versie van phpbb

de mysql database staat op de server van mijn hosting bedrijf

het probleem lijkt dus opgelost door de mysql , het hosting bedrijf heeft de

my.cnf geedit.

maar mijn vraag is meer.. ho ehet kan dat een forum heel lang zonder problemen loopt
en dan plots de zoekfunctie niet meer wil, je die foutmelding krijgt

zou de database te groot worden
Even kort door de bocht (aangezien ik niet het fijne van phpBB weet). Ik weet dat phpBB de zoekresultaten tijdelijk opslaat in een tabel om vervolgens te tonen aan de gebruiker (zodat die de resultaten kan sorteren zonder dat alles opnieuw afgezocht moet worden). Als je nu een query uitvoert waarbij een hoop resultaten zijn, genereert phpBB een veel langere INSERT-query en dan krijg je die foutmelding
  zaterdag 19 november 2005 @ 12:18:48 #86
104583 cyberstalker
Een krachtig neen!
pi_32395514
Dat lijkt me erg onwaarschijnlijk, JeRa. Waarom zou die INSERT query langer zijn bij meer resultaten?

Iemand met ook maar een heel klein beetje SQL kennis weet dat je voor dat soort dingen het beste iets als 'INSERT INTO blabla (SELECT iets FROM iets_anders);' kunt doen. En of dat nou veel of weinig resultaten oplevert, de query blijft even lang.
Hope for the best, prepare for the worst.
  FOK!-Schrikkelbaas zaterdag 19 november 2005 @ 12:29:11 #87
1972 Swetsenegger
Egocentrische Narcist
pi_32395782
Korte vraag.
Ik heb een sessie waar een array instaat (winkelwagen) de key is de product_id, de value is het aantal bestelde items van desbetreffend product.

De array kan ik opzich natuurlijk heel eenvoudig uitlezen met een foreach, maar... als ik dan alle product informatie erbij wilt hebben (overzicht winkelwagentje) betekent dat dat ik mijn query in de foreach moet opnemen.

Jullie begrijpen het al. Bij een winkelwagentje met bv 10 verschillende artikelen betekent dat dat ik 10 queries draai om de inhoud van het winkelwagentje op beeld te tonen.

Kan ik niet een array uit een tabel selecten, want in dat geval heb ik maar 1 query nodig?
pi_32395984
Met een query als
1
2
SELECT * FROM table
WHERE id IN (1,3,9,4,25)

kun je verschillende ID's gelijktijdig opgeven. Je zult alleen met implode je array met id's moeten omzetten naar zo'n komma-gescheiden string.
  FOK!-Schrikkelbaas zaterdag 19 november 2005 @ 12:37:44 #89
1972 Swetsenegger
Egocentrische Narcist
pi_32396033
quote:
Op zaterdag 19 november 2005 12:36 schreef Light het volgende:
Met een query als
[ code verwijderd ]

kun je verschillende ID's gelijktijdig opgeven. Je zult alleen met implode je array met id's moeten omzetten naar zo'n komma-gescheiden string.
Top, dan moet ik alleen weer kijken hoe ik de values bij de juiste ID krijg, maar dat moet lukken
  zaterdag 19 november 2005 @ 12:38:52 #90
104583 cyberstalker
Een krachtig neen!
pi_32396063
Je kunt dan toch gewoon gebruik maken van een sql-statement met een OR erin?

1
2
3
4
5
6
7
8
9
10
11
<?php
$sqlArray
=array();

foreach (
$winkelwagen as $productId =&gt; $productAantal)
{
    
array_push($sqlArray, $productId);
}

$productQuery=implode(' OR product_id=', $sqlArray);
$query="SELECT whatever FROM products WHERE (product_id={$productQuery});"
?>


Untested, uiteraard, je begrijpt het idee wel waarschijnlijk .
Hope for the best, prepare for the worst.
  FOK!-Schrikkelbaas zaterdag 19 november 2005 @ 12:46:41 #91
1972 Swetsenegger
Egocentrische Narcist
pi_32396280
quote:
Op zaterdag 19 november 2005 12:38 schreef cyberstalker het volgende:
Je kunt dan toch gewoon gebruik maken van een sql-statement met een OR erin?
[ code verwijderd ]

Untested, uiteraard, je begrijpt het idee wel waarschijnlijk .
Slim, met een array_push een nieuwe array maken.
Ik ga zo even testen of dit inderdaad werkt
pi_32396504
1
2
3
4
5
6
7
8
<?php
$sqlArray
=array();

foreach (
$winkelwagen as $productId =&gt; $productAantal)
{
    
$sqlArray[] = $productId;
}
?>


Zelfde resultaat, en je gebruikt geen functies.
  zaterdag 19 november 2005 @ 13:01:51 #93
104583 cyberstalker
Een krachtig neen!
pi_32396693
quote:
Op zaterdag 19 november 2005 12:54 schreef Light het volgende:

[ code verwijderd ]

Zelfde resultaat, en je gebruikt geen functies.
Wat is daarvan precies het voordeel? Voor zover mij bekend is een array_push sneller dan toewijzen zonder key.
Hope for the best, prepare for the worst.
  FOK!-Schrikkelbaas zaterdag 19 november 2005 @ 13:05:08 #94
1972 Swetsenegger
Egocentrische Narcist
pi_32396778
Hij werkt. Ik ben ook wel benieuwd naar lights antwoord. In principe is zijn code wel simpeler.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
session_start
();
$sqlArray=array();
foreach(
$_SESSION['cart'] as $productId =&gt; $number){
  
array_push($sqlArray, $productId);
  
$total=$total+$number;
}
$productQuery=implode(' || product_id=', $sqlArray);
$query="SELECT * FROM produkten WHERE product_id=".$productQuery;
$result=mysql_query($query);
while(
$row=mysql_fetch_assoc($result)){
  echo
$row['articelcode'].' '.$row['name'].' aantal: '.$_SESSION['cart'][$row['product_id']].'<br />';
}
?>


[ Bericht 95% gewijzigd door Swetsenegger op 19-11-2005 13:13:54 ]
  zaterdag 19 november 2005 @ 13:23:13 #95
104583 cyberstalker
Een krachtig neen!
pi_32397196
Twee dingetjes:

  • Die regel met $total kun je ook schrijven als $total+=$number; .
  • De IN operator werkt inderdaad ook prima, en is hier eigenlijk logischer.
  • Hope for the best, prepare for the worst.
      FOK!-Schrikkelbaas zaterdag 19 november 2005 @ 13:25:04 #96
    1972 Swetsenegger
    Egocentrische Narcist
    pi_32397232
    quote:
    Op zaterdag 19 november 2005 13:23 schreef cyberstalker het volgende:
    Twee dingetjes:

  • Die regel met $total kun je ook schrijven als $total+=$number; .
  • Ik was de juiste operator even kwijt
    quote:
  • De IN operator werkt inderdaad ook prima, en is hier eigenlijk logischer.
  • Scheelt natuurlijk een implode. Even rommelen.
    -edit- scheelt helemaal geen implode
    pi_32397234
    Array_sum en array_keys kan je ook gebruiken. En idd IN zoals cyberstalker zegt, dat is sneller dan een serie OR's.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <?php
    session_start();
    $total = array_sum($_SESSION['cart']);
    $productIDs = array_keys($_SESSION['cart']);
    $query = "SELECT * FROM produkten WHERE product_id IN (" . implode(', ', $productIDs) . ")";
    $result = mysql_query($query);
    while($row = mysql_fetch_assoc($result)){
      echo $row['articelcode'].' '.$row['name'].' aantal: '.$_SESSION['cart'][$row['product_id']].'<br />';
    }
    ?>
    Wil iedereen die in telekinese gelooft nu mijn hand op steken?
    | Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
      FOK!-Schrikkelbaas zaterdag 19 november 2005 @ 13:26:41 #98
    1972 Swetsenegger
    Egocentrische Narcist
    pi_32397279
    quote:
    Op zaterdag 19 november 2005 13:25 schreef SuperRembo het volgende:
    Array_sum en array_keys kan je ook gebruiken. En idd IN zoals cyberstalker zegt, dat is sneller dan een serie OR's.
    [ code verwijderd ]
    ALTIJD is jouw code mooier dan wat ik verzin .
    Bedankt!
      zaterdag 19 november 2005 @ 13:30:43 #99
    104583 cyberstalker
    Een krachtig neen!
    pi_32397385
    En om het laatste beetje performance uit SuperRembo's code te slepen, kun je op regel 5 gebruik maken van single quotes.
    Hope for the best, prepare for the worst.
      FOK!-Schrikkelbaas zaterdag 19 november 2005 @ 13:34:11 #100
    1972 Swetsenegger
    Egocentrische Narcist
    pi_32397492
    Hij is helemaal geweldig.
    Wat een heerlijk kort stukje code
    abonnement Unibet Coolblue Bitvavo
    Forum Opties
    Forumhop:
    Hop naar:
    (afkorting, bv 'KLB')