Portál AbcLinuxu, 10. května 2025 00:24
max_input_vars, post_max_size, max_execution_time i memory_limit
na vyssi a posleze i na opravdu vysoke hodnoty a po restartu apache se to chova stale stejne (nacteni konfigurace jsem overil pres phpinfo)
Řešení dotazu:
mysql> describe rezervace; +--------------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+------------------+------+-----+---------+----------------+ | rezervace_id | int(10) unsigned | NO | PRI | NULL | auto_increment | | hotel | int(11) | NO | | NULL | | | den | date | YES | | NULL | | | stav | smallint(6) | NO | | NULL | | | jmeno | varchar(32) | YES | | NULL | | | pokoje | smallint(6) | YES | | NULL | | | obsazenost | smallint(6) | YES | | NULL | | | zaskrtnuti | smallint(6) | YES | | NULL | | +--------------+------------------+------+-----+---------+----------------+ 8 rows in set (0.00 sec)
<form method="POST">tak to odešle metodou GET, u které je omezená délka dotazu.
$query = "update rezervace set stav='$stav' where rezervace_id='$rid'";
je fukcni i v terminalu
mysql> update rezervace set stav='3' where rezervace_id='215937';Query OK
mysql> select count(*) from rezervace where hotel>=3120 and hotel<=3139; +----------+ | count(*) | +----------+ | 1820 | +----------+ 1 row in set (0.03 sec) mysql> select count(*) from rezervace where hotel>=3120 and hotel<=3139 and stav='3'; +----------+ | count(*) | +----------+ | 1820 | +----------+ 1 row in set (0.00 sec)Po zmene stavu v rozmezi prvnich 800 zaznamu se update provede:
mysql> -- zmena stavu jednoho sloupce na dvaceti radcich kalendare mysql> select count(*) from rezervace where hotel>=3120 and hotel<=3139; +----------+ | count(*) | +----------+ | 1820 | +----------+ 1 row in set (0.01 sec) mysql> select count(*) from rezervace where hotel>=3120 and hotel<=3139 and stav='3'; +----------+ | count(*) | +----------+ | 1800 | +----------+ 1 row in set (0.00 sec) mysql> select count(*) from rezervace where hotel>=3120 and hotel<=3139 and stav='0'; +----------+ | count(*) | +----------+ | 20 | +----------+ 1 row in set (0.01 sec)Tedy, takhle to funguje jak ma.
Pri zmene stavu u zaznamu, kde je problem s updatem, a zmena neprovede se vypisou jen dotazy (echo $query;) z rozmezi prvnich 800, takze odhaduju, ze je problem v php skriptu
...se provede jen 20 sql dotazu, ne ze by se updatovalo vsech 1600...o to stara php
$ ll bbb* -rw-r--r-- 1 matyas staff 41964 2 čvc 17:53 bbb_45dni_15augYES.php -rw-r--r-- 1 matyas staff 41964 2 čvc 17:53 bbb_46dni_16augNO.php -rw-r--r-- 1 matyas staff 41964 2 čvc 17:53 bbb_47dni_17augNO.php
//poznamka pro me: //45dni*20=900 zaznamu ANO //46dni*20=920 zaznamu NEprovede se //47dni*20=940 zaznamu NEprovede se //tech 800 bylo teda zaokrouhlene na 40 dni2) Dal me napadlo, jestli skript neorizne ridici promeny pro switch, dal jsem je tedy na zacatek formu a zmena zadna, takze to musi byt necim jinym.
Array ( [0] => 3120 [1] => 2014-07-02r212531 [2] => 2014-07-03r212532 ... [1197] => 2014-08-28r215567 [1198] => 2014-08-29r215587 [1199] => 2014-08-30r215607 )
ini_get('suhosin.request.max_vars'): ini_get('suhosin.post.max_vars'): ini_get('max_input_vars'):5000
$odskrtnute_rezervace ( [0] => 212531 [35] => 212776 [70] => 212899 [105] => 213022 [140] => 213145 ... [1196] => 215624 [1197] => 215625 [1198] => 215626 [1199] => 215627 )4) v includu uncheck_fix.php ktery byl na posledni urovni vnorene funkce, byla obsazena nejake dalsi funkcnost a byl tam cyklus:
for ($i=0;$i<1000;$i++) {...}
ktery tedy nevzal id-cka nad index pole 1000, ktere se v poli predavaly pro dalsi zpracovani cyklem, kde byly finalne tvorene sql updaty.
Někde tam je triviální chyba, drobnost která způsobí že se část dotazů "tiše" neprovede. Na to je PHP expertní jazyk.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.