Notice: A non well formed numeric value encountered in /var/www/clients/client2/web3/web/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 118

Notice: A non well formed numeric value encountered in /var/www/clients/client2/web3/web/wp-content/plugins/crayon-syntax-highlighter/crayon_formatter.class.php on line 119

Pracujete s Drupalem? Používáte jeho vlastnost BATCH? Stává se vám, že se tato chyba velmi často objevuje bez zjevné příčiny? Mně ano.

Už cca tři čtvrtě roku musím pracovat s Drupalem. Pro něj píši modul, který má pracovat v dávce se vstupními daty, nějak je „přechroustat“ a uložit jako node. Nic moc složitého.

U mě to má několik úskalí:

  1. jednotlivé dávky mají několik desítek prvků
  2. dávek je několik set
  3. průměrné zpracování jednoho prvku trvá cca 15s

Brutální data, že? Když uvážím, že to pouštím na celkem silném stroji, celkem mě mrazí po zádech a mám pochybnosti o kvalitě a výkonnosti Drupalu.

Nicméně tento článek nepíši jako kritiku na Drupal, ale protože jsem narazil na problém s batchem.

Při spuštění výše zmíněných dávek se mi v naprosto nepravidelných a náhodných cyklech objevovala tato chyba:

Bohužel se mi nepovedlo zjistit, co s tím. Nakonec mě zachránil jiný problém. Ten řešil všeobecně nefunkční batch. Spásná myšlenka toho článku byla nastavit 3 serverové hodnoty na neomezeně.

Jedná se o:

  • memory_limit = -1
  • max_input_time = -1
  • max_execution_time = 0

Jedná se o celkem mocné nastavení. Nicméně pozor! V produkčním prostředí webu není dobré mít tyto hodnoty nastavené na neomezené hodnoty.

V režimu vývoje a plnění systému daty jsou to ale neocenitelní pomocníci. Nevím přesně, jak batch funguje (podle mě se dost liší realita od toho, co má Drupal napsáno na webu). Ale jen díky tomuto nastavení běží bez pádů a problémů třeba pro 35 000 položek v kuse.