Deployed 59ff7f1 to 5.4 with MkDocs 1.1.2 and mike 0.5.5
[GitHub/WoltLab/woltlab.github.io.git] / latest / php / api / caches_persistent-caches / index.html
CommitLineData
0c5338dd
TD
1
2<!doctype html>
3<html lang="en" class="no-js">
4 <head>
5
6 <meta charset="utf-8">
7 <meta name="viewport" content="width=device-width,initial-scale=1">
8
9
10
11
fb962f09
WG
12 <link rel="icon" href="../../../assets/default.favicon.ico">
13 <meta name="generator" content="mkdocs-1.1.2, mkdocs-material-7.1.0">
0c5338dd
TD
14
15
16
17 <title>Persistent Caches - WoltLab Suite Documentation</title>
18
19
20
fb962f09 21 <link rel="stylesheet" href="../../../assets/stylesheets/main.33e2939f.min.css">
0c5338dd
TD
22
23
fb962f09 24 <link rel="stylesheet" href="../../../assets/stylesheets/palette.ef6f36e2.min.css">
0c5338dd
TD
25
26
27
28 <meta name="theme-color" content="#009485">
29
30
31
32
33
fd8430cb
WG
34
35
0c5338dd
TD
36
37
38 <link rel="stylesheet" href="../../../stylesheets/extra.css">
39
40
41
42
43
44 </head>
45
46
47
48
49
50
51
52 <body dir="ltr" data-md-color-scheme="" data-md-color-primary="teal" data-md-color-accent="">
0c5338dd
TD
53
54
fb962f09
WG
55 <script>function __prefix(e){return new URL("../../..",location).pathname+"."+e}function __get(e,t=localStorage){return JSON.parse(t.getItem(__prefix(e)))}</script>
56
0c5338dd
TD
57 <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
58 <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
59 <label class="md-overlay" for="__drawer"></label>
60 <div data-md-component="skip">
61
62
63 <a href="#persistent-caches" class="md-skip">
64 Skip to content
65 </a>
66
67 </div>
68 <div data-md-component="announce">
69
70 <aside class="md-announce">
71 <div class="md-announce__inner md-grid md-typeset">
72
73 <a href="https://www.woltlab.com">Back to <strong>woltlab.com</strong></a>
74
75 </div>
76 </aside>
77
78 </div>
79
fb962f09 80 <header class="md-header" data-md-component="header">
0c5338dd 81 <nav class="md-header__inner md-grid" aria-label="Header">
fb962f09 82 <a href="../../.." title="WoltLab Suite Documentation" class="md-header__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
0c5338dd
TD
83
84 <img src="../../../assets/logo.png" alt="logo">
85
86 </a>
87 <label class="md-header__button md-icon" for="__drawer">
88 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
89 </label>
90 <div class="md-header__title" data-md-component="header-title">
91 <div class="md-header__ellipsis">
92 <div class="md-header__topic">
93 <span class="md-ellipsis">
94 WoltLab Suite Documentation
95 </span>
96 </div>
97 <div class="md-header__topic" data-md-component="header-topic">
98 <span class="md-ellipsis">
99
100 Persistent Caches
101
102 </span>
103 </div>
104 </div>
0c5338dd
TD
105 </div>
106
fb962f09
WG
107
108
a3639e76
WG
109 <label class="md-header__button md-icon" for="__search">
110 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
111 </label>
112
113<div class="md-search" data-md-component="search" role="dialog">
114 <label class="md-search__overlay" for="__search"></label>
115 <div class="md-search__inner" role="search">
116 <form class="md-search__form" name="search">
117 <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" data-md-state="active" required>
118 <label class="md-search__icon md-icon" for="__search">
119 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
120 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
121 </label>
122 <button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
fb962f09 123 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
a3639e76
WG
124 </button>
125 </form>
126 <div class="md-search__output">
127 <div class="md-search__scrollwrap" data-md-scrollfix>
128 <div class="md-search-result" data-md-component="search-result">
129 <div class="md-search-result__meta">
130 Initializing search
131 </div>
132 <ol class="md-search-result__list"></ol>
133 </div>
134 </div>
135 </div>
136 </div>
137</div>
138
0c5338dd 139
7124f4cb
WG
140 <div class="md-header__source">
141
142<a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
143 <div class="md-source__icon md-icon">
144
fb962f09 145 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
7124f4cb
WG
146 </div>
147 <div class="md-source__repository">
148 GitHub
149 </div>
150</a>
151 </div>
152
0c5338dd
TD
153 </nav>
154</header>
155
156 <div class="md-container" data-md-component="container">
157
158
159
160
161 <main class="md-main" data-md-component="main">
162 <div class="md-main__inner md-grid">
163
164
165
166 <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
167 <div class="md-sidebar__scrollwrap">
168 <div class="md-sidebar__inner">
169
170
171
0c5338dd
TD
172<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
173 <label class="md-nav__title" for="__drawer">
fb962f09 174 <a href="../../.." title="WoltLab Suite Documentation" class="md-nav__button md-logo" aria-label="WoltLab Suite Documentation" data-md-component="logo">
0c5338dd
TD
175
176 <img src="../../../assets/logo.png" alt="logo">
177
178 </a>
179 WoltLab Suite Documentation
180 </label>
181
7124f4cb
WG
182 <div class="md-nav__source">
183
184<a href="https://github.com/WoltLab/docs.woltlab.com/" title="Go to repository" class="md-source" data-md-component="source">
185 <div class="md-source__icon md-icon">
186
fb962f09 187 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
7124f4cb
WG
188 </div>
189 <div class="md-source__repository">
190 GitHub
191 </div>
192</a>
193 </div>
194
0c5338dd
TD
195 <ul class="md-nav__list" data-md-scrollfix>
196
197
198
199
200
201
202
203
204 <li class="md-nav__item">
205 <a href="../../../getting-started/" class="md-nav__link">
206 Getting Started
207 </a>
208 </li>
209
210
211
212
213
214
215
216
217
6923e968
WG
218
219
0c5338dd
TD
220
221
6923e968 222 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
0c5338dd
TD
223
224
6923e968 225 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2" type="checkbox" id="__nav_2" checked>
0c5338dd
TD
226
227 <label class="md-nav__link" for="__nav_2">
228 PHP API
229 <span class="md-nav__icon md-icon"></span>
230 </label>
231 <nav class="md-nav" aria-label="PHP API" data-md-level="1">
232 <label class="md-nav__title" for="__nav_2">
233 <span class="md-nav__icon md-icon"></span>
234 PHP API
235 </label>
236 <ul class="md-nav__list" data-md-scrollfix>
237
238
239
240
241
242 <li class="md-nav__item">
243 <a href="../../pages/" class="md-nav__link">
244 Pages
245 </a>
246 </li>
247
248
249
250
251
252
253
254 <li class="md-nav__item">
255 <a href="../../database-objects/" class="md-nav__link">
256 Database Objects
257 </a>
258 </li>
259
260
261
262
263
264
265
266 <li class="md-nav__item">
267 <a href="../../database-access/" class="md-nav__link">
268 Database Access
269 </a>
270 </li>
271
272
273
274
275
276
277
278 <li class="md-nav__item">
279 <a href="../../exceptions/" class="md-nav__link">
280 Exceptions
281 </a>
282 </li>
283
284
285
286
287
288
6923e968
WG
289
290
0c5338dd
TD
291
292
6923e968 293 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
0c5338dd
TD
294
295
6923e968 296 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5" type="checkbox" id="__nav_2_5" checked>
0c5338dd
TD
297
298 <label class="md-nav__link" for="__nav_2_5">
299 API
300 <span class="md-nav__icon md-icon"></span>
301 </label>
302 <nav class="md-nav" aria-label="API" data-md-level="2">
303 <label class="md-nav__title" for="__nav_2_5">
304 <span class="md-nav__icon md-icon"></span>
305 API
306 </label>
307 <ul class="md-nav__list" data-md-scrollfix>
308
309
310
311
6923e968
WG
312
313
314
315
316 <li class="md-nav__item md-nav__item--active md-nav__item--nested">
317
318
319 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_1" type="checkbox" id="__nav_2_5_1" checked>
320
321 <label class="md-nav__link" for="__nav_2_5_1">
322 Caches
323 <span class="md-nav__icon md-icon"></span>
324 </label>
325 <nav class="md-nav" aria-label="Caches" data-md-level="3">
326 <label class="md-nav__title" for="__nav_2_5_1">
327 <span class="md-nav__icon md-icon"></span>
328 Caches
329 </label>
330 <ul class="md-nav__list" data-md-scrollfix>
331
332
333
334
0c5338dd
TD
335
336 <li class="md-nav__item">
337 <a href="../caches/" class="md-nav__link">
6923e968 338 Overview
0c5338dd
TD
339 </a>
340 </li>
341
342
343
344
345
346
6923e968
WG
347
348
349
350 <li class="md-nav__item md-nav__item--active">
351
352 <input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
353
354
355
356
357 <label class="md-nav__link md-nav__link--active" for="__toc">
358 Persistent Caches
359 <span class="md-nav__icon md-icon"></span>
360 </label>
361
362 <a href="./" class="md-nav__link md-nav__link--active">
363 Persistent Caches
364 </a>
365
366
367<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
368
369
370
371
372
373 <label class="md-nav__title" for="__toc">
374 <span class="md-nav__icon md-icon"></span>
375 Table of contents
376 </label>
377 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
378
379 <li class="md-nav__item">
380 <a href="#abstractcachebuilder" class="md-nav__link">
381 AbstractCacheBuilder
382 </a>
383
384 <nav class="md-nav" aria-label="AbstractCacheBuilder">
385 <ul class="md-nav__list">
386
387 <li class="md-nav__item">
388 <a href="#getdataarray-parameters-string-arrayindex-array" class="md-nav__link">
389 getData(array $parameters = [], string $arrayIndex = ''): array
390 </a>
391
392</li>
393
394 <li class="md-nav__item">
395 <a href="#getmaxlifetime-int" class="md-nav__link">
396 getMaxLifetime(): int
397 </a>
398
399</li>
400
401 <li class="md-nav__item">
402 <a href="#resetarray-parameters-void" class="md-nav__link">
403 reset(array $parameters = []): void
404 </a>
405
406</li>
407
408 <li class="md-nav__item">
409 <a href="#rebuildarray-parameters-array" class="md-nav__link">
410 rebuild(array $parameters): array
411 </a>
412
413</li>
414
415 </ul>
416 </nav>
417
418</li>
419
420 </ul>
421
422</nav>
423
424 </li>
425
426
427
428
429
430
431
432 <li class="md-nav__item">
433 <a href="../caches_runtime-caches/" class="md-nav__link">
434 Runtime Caches
435 </a>
436 </li>
437
438
439
440 </ul>
441 </nav>
442 </li>
443
444
445
446
447
448
0c5338dd
TD
449
450 <li class="md-nav__item">
451 <a href="../comments/" class="md-nav__link">
452 Comments
453 </a>
454 </li>
455
456
457
458
459
460
461
462 <li class="md-nav__item">
463 <a href="../cronjobs/" class="md-nav__link">
464 Cronjobs
465 </a>
466 </li>
467
468
469
470
471
472
473
474 <li class="md-nav__item">
475 <a href="../events/" class="md-nav__link">
476 Events
477 </a>
478 </li>
479
480
481
482
483
484
485
486
487 <li class="md-nav__item md-nav__item--nested">
488
489
490 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_2_5_5" type="checkbox" id="__nav_2_5_5" >
491
492 <label class="md-nav__link" for="__nav_2_5_5">
493 Form Builder
494 <span class="md-nav__icon md-icon"></span>
495 </label>
496 <nav class="md-nav" aria-label="Form Builder" data-md-level="3">
497 <label class="md-nav__title" for="__nav_2_5_5">
498 <span class="md-nav__icon md-icon"></span>
499 Form Builder
500 </label>
501 <ul class="md-nav__list" data-md-scrollfix>
502
503
504
505
506
507 <li class="md-nav__item">
508 <a href="../form_builder/overview/" class="md-nav__link">
509 Overview
510 </a>
511 </li>
512
513
514
515
516
517
518
519 <li class="md-nav__item">
520 <a href="../form_builder/structure/" class="md-nav__link">
521 Structure
522 </a>
523 </li>
524
525
526
527
528
529
530
531 <li class="md-nav__item">
532 <a href="../form_builder/form_fields/" class="md-nav__link">
533 Fields
534 </a>
535 </li>
536
537
538
539
540
541
542
543 <li class="md-nav__item">
544 <a href="../form_builder/validation_data/" class="md-nav__link">
545 Validation and Data
546 </a>
547 </li>
548
549
550
551
552
553
554
555 <li class="md-nav__item">
556 <a href="../form_builder/dependencies/" class="md-nav__link">
557 Dependencies
558 </a>
559 </li>
560
561
562
563 </ul>
564 </nav>
565 </li>
566
567
568
569
570
571
572
573 <li class="md-nav__item">
574 <a href="../package_installation_plugins/" class="md-nav__link">
575 Package Installation Plugins
576 </a>
577 </li>
578
579
580
581
582
583
584
585 <li class="md-nav__item">
586 <a href="../user_activity_points/" class="md-nav__link">
587 User Activity Points
588 </a>
589 </li>
590
591
592
593
594
595
596
597 <li class="md-nav__item">
598 <a href="../user_notifications/" class="md-nav__link">
599 User Notifications
600 </a>
601 </li>
602
603
604
605
606
607
608
609 <li class="md-nav__item">
610 <a href="../sitemaps/" class="md-nav__link">
611 Sitemaps
612 </a>
613 </li>
614
615
616
617 </ul>
618 </nav>
619 </li>
620
621
622
623
624
625
626
627 <li class="md-nav__item">
628 <a href="../../code-style/" class="md-nav__link">
629 Code Style
630 </a>
631 </li>
632
633
634
635
636
637
638
639 <li class="md-nav__item">
640 <a href="../../apps/" class="md-nav__link">
641 Apps
642 </a>
643 </li>
644
645
646
647
648
649
650
651 <li class="md-nav__item">
652 <a href="../../gdpr/" class="md-nav__link">
653 GDPR
654 </a>
655 </li>
656
657
658
659 </ul>
660 </nav>
661 </li>
662
663
664
665
666
667
668
669
670
671
672
673 <li class="md-nav__item md-nav__item--nested">
674
675
676 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_3" type="checkbox" id="__nav_3" >
677
678 <label class="md-nav__link" for="__nav_3">
679 Languages, Templates & CSS
680 <span class="md-nav__icon md-icon"></span>
681 </label>
682 <nav class="md-nav" aria-label="Languages, Templates & CSS" data-md-level="1">
683 <label class="md-nav__title" for="__nav_3">
684 <span class="md-nav__icon md-icon"></span>
685 Languages, Templates & CSS
686 </label>
687 <ul class="md-nav__list" data-md-scrollfix>
688
689
690
691
692
693 <li class="md-nav__item">
694 <a href="../../../view/languages/" class="md-nav__link">
695 Languages
696 </a>
697 </li>
698
699
700
701
702
703
704
705 <li class="md-nav__item">
706 <a href="../../../view/templates/" class="md-nav__link">
707 Templates
708 </a>
709 </li>
710
711
712
713
714
715
716
6923e968
WG
717 <li class="md-nav__item">
718 <a href="../../../view/template-plugins/" class="md-nav__link">
719 Template Plugins
720 </a>
721 </li>
722
723
724
725
726
727
728
0c5338dd
TD
729 <li class="md-nav__item">
730 <a href="../../../view/css/" class="md-nav__link">
731 CSS
732 </a>
733 </li>
734
735
736
737 </ul>
738 </nav>
739 </li>
740
741
742
743
744
745
746
747
748
749
750
751 <li class="md-nav__item md-nav__item--nested">
752
753
754 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4" type="checkbox" id="__nav_4" >
755
756 <label class="md-nav__link" for="__nav_4">
77efcd46 757 TypeScript and JavaScript API
0c5338dd
TD
758 <span class="md-nav__icon md-icon"></span>
759 </label>
77efcd46 760 <nav class="md-nav" aria-label="TypeScript and JavaScript API" data-md-level="1">
0c5338dd
TD
761 <label class="md-nav__title" for="__nav_4">
762 <span class="md-nav__icon md-icon"></span>
77efcd46 763 TypeScript and JavaScript API
0c5338dd
TD
764 </label>
765 <ul class="md-nav__list" data-md-scrollfix>
766
767
768
769
770
771 <li class="md-nav__item">
772 <a href="../../../javascript/general-usage/" class="md-nav__link">
773 General Usage
774 </a>
775 </li>
776
777
778
779
780
781
782
77efcd46
WG
783 <li class="md-nav__item">
784 <a href="../../../javascript/typescript/" class="md-nav__link">
785 TypeScript
786 </a>
787 </li>
788
789
790
791
792
793
794
0c5338dd
TD
795
796 <li class="md-nav__item md-nav__item--nested">
797
798
77efcd46 799 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_4_3" type="checkbox" id="__nav_4_3" >
0c5338dd 800
77efcd46 801 <label class="md-nav__link" for="__nav_4_3">
0c5338dd
TD
802 New API
803 <span class="md-nav__icon md-icon"></span>
804 </label>
805 <nav class="md-nav" aria-label="New API" data-md-level="2">
77efcd46 806 <label class="md-nav__title" for="__nav_4_3">
0c5338dd
TD
807 <span class="md-nav__icon md-icon"></span>
808 New API
809 </label>
810 <ul class="md-nav__list" data-md-scrollfix>
811
812
813
814
815
816 <li class="md-nav__item">
817 <a href="../../../javascript/new-api_writing-a-module/" class="md-nav__link">
818 Writing a module
819 </a>
820 </li>
821
822
823
824
825
826
827
828 <li class="md-nav__item">
829 <a href="../../../javascript/new-api_data-structures/" class="md-nav__link">
830 Data Structures
831 </a>
832 </li>
833
834
835
836
837
838
839
840 <li class="md-nav__item">
841 <a href="../../../javascript/new-api_core/" class="md-nav__link">
842 Core Functions
843 </a>
844 </li>
845
846
847
848
849
850
851
852 <li class="md-nav__item">
853 <a href="../../../javascript/new-api_dom/" class="md-nav__link">
854 DOM
855 </a>
856 </li>
857
858
859
860
861
862
863
864 <li class="md-nav__item">
865 <a href="../../../javascript/new-api_events/" class="md-nav__link">
866 Event Handling
867 </a>
868 </li>
869
870
871
872
873
874
875
876 <li class="md-nav__item">
877 <a href="../../../javascript/new-api_ajax/" class="md-nav__link">
878 Ajax
879 </a>
880 </li>
881
882
883
884
885
886
887
888 <li class="md-nav__item">
889 <a href="../../../javascript/new-api_dialogs/" class="md-nav__link">
890 Dialogs
891 </a>
892 </li>
893
894
895
896
897
898
899
900 <li class="md-nav__item">
901 <a href="../../../javascript/new-api_browser/" class="md-nav__link">
902 Browser and Screen Sizes
903 </a>
904 </li>
905
906
907
908
909
910
911
912 <li class="md-nav__item">
913 <a href="../../../javascript/new-api_ui/" class="md-nav__link">
914 User Interface
915 </a>
916 </li>
917
918
919
920 </ul>
921 </nav>
922 </li>
923
924
925
926
927
928
929
930 <li class="md-nav__item">
931 <a href="../../../javascript/legacy-api/" class="md-nav__link">
932 Legacy API
933 </a>
934 </li>
935
936
937
938
939
940
941
942 <li class="md-nav__item">
943 <a href="../../../javascript/helper-functions/" class="md-nav__link">
944 Helper Functions
945 </a>
946 </li>
947
948
949
950
951
952
953
954 <li class="md-nav__item">
955 <a href="../../../javascript/code-snippets/" class="md-nav__link">
956 Code Snippets
957 </a>
958 </li>
959
960
961
962 </ul>
963 </nav>
964 </li>
965
966
967
968
969
970
971
972
973
974
975
976 <li class="md-nav__item md-nav__item--nested">
977
978
979 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5" type="checkbox" id="__nav_5" >
980
981 <label class="md-nav__link" for="__nav_5">
982 Package Components
983 <span class="md-nav__icon md-icon"></span>
984 </label>
985 <nav class="md-nav" aria-label="Package Components" data-md-level="1">
986 <label class="md-nav__title" for="__nav_5">
987 <span class="md-nav__icon md-icon"></span>
988 Package Components
989 </label>
990 <ul class="md-nav__list" data-md-scrollfix>
991
992
993
994
995
996 <li class="md-nav__item">
997 <a href="../../../package/package-xml/" class="md-nav__link">
998 package.xml
999 </a>
1000 </li>
1001
1002
1003
1004
1005
1006
1007
1008
1009 <li class="md-nav__item md-nav__item--nested">
1010
1011
1012 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_5_2" type="checkbox" id="__nav_5_2" >
1013
1014 <label class="md-nav__link" for="__nav_5_2">
1015 PIPs
1016 <span class="md-nav__icon md-icon"></span>
1017 </label>
1018 <nav class="md-nav" aria-label="PIPs" data-md-level="2">
1019 <label class="md-nav__title" for="__nav_5_2">
1020 <span class="md-nav__icon md-icon"></span>
1021 PIPs
1022 </label>
1023 <ul class="md-nav__list" data-md-scrollfix>
1024
1025
1026
1027
1028
1029 <li class="md-nav__item">
1030 <a href="../../../package/pip/" class="md-nav__link">
1031 Overview
1032 </a>
1033 </li>
1034
1035
1036
1037
1038
1039
1040
1041 <li class="md-nav__item">
1042 <a href="../../../package/pip/acl-option/" class="md-nav__link">
1043 aclOption
1044 </a>
1045 </li>
1046
1047
1048
1049
1050
1051
1052
1053 <li class="md-nav__item">
1054 <a href="../../../package/pip/acp-menu/" class="md-nav__link">
1055 acpMenu
1056 </a>
1057 </li>
1058
1059
1060
1061
1062
1063
1064
1065 <li class="md-nav__item">
1066 <a href="../../../package/pip/acp-search-provider/" class="md-nav__link">
1067 acpSearchProvider
1068 </a>
1069 </li>
1070
1071
1072
1073
1074
1075
1076
1077 <li class="md-nav__item">
1078 <a href="../../../package/pip/acp-template/" class="md-nav__link">
1079 acpTemplate
1080 </a>
1081 </li>
1082
1083
1084
1085
1086
1087
1088
1089 <li class="md-nav__item">
1090 <a href="../../../package/pip/bbcode/" class="md-nav__link">
1091 bbcode
1092 </a>
1093 </li>
1094
1095
1096
1097
1098
1099
1100
1101 <li class="md-nav__item">
1102 <a href="../../../package/pip/box/" class="md-nav__link">
1103 box
1104 </a>
1105 </li>
1106
1107
1108
1109
1110
1111
1112
1113 <li class="md-nav__item">
1114 <a href="../../../package/pip/clipboard-action/" class="md-nav__link">
1115 clipboardAction
1116 </a>
1117 </li>
1118
1119
1120
1121
1122
1123
1124
1125 <li class="md-nav__item">
1126 <a href="../../../package/pip/core-object/" class="md-nav__link">
1127 coreObject
1128 </a>
1129 </li>
1130
1131
1132
1133
1134
1135
1136
1137 <li class="md-nav__item">
1138 <a href="../../../package/pip/cronjob/" class="md-nav__link">
1139 cronjob
1140 </a>
1141 </li>
1142
1143
1144
1145
1146
1147
1148
6923e968
WG
1149 <li class="md-nav__item">
1150 <a href="../../../package/pip/database/" class="md-nav__link">
1151 database
1152 </a>
1153 </li>
1154
1155
1156
1157
1158
1159
1160
0c5338dd
TD
1161 <li class="md-nav__item">
1162 <a href="../../../package/pip/event-listener/" class="md-nav__link">
1163 eventListener
1164 </a>
1165 </li>
1166
1167
1168
1169
1170
1171
1172
1173 <li class="md-nav__item">
1174 <a href="../../../package/pip/file/" class="md-nav__link">
1175 file
1176 </a>
1177 </li>
1178
1179
1180
1181
1182
1183
1184
1185 <li class="md-nav__item">
1186 <a href="../../../package/pip/language/" class="md-nav__link">
1187 language
1188 </a>
1189 </li>
1190
1191
1192
1193
1194
1195
1196
1197 <li class="md-nav__item">
1198 <a href="../../../package/pip/media-provider/" class="md-nav__link">
1199 mediaProvider
1200 </a>
1201 </li>
1202
1203
1204
1205
1206
1207
1208
1209 <li class="md-nav__item">
1210 <a href="../../../package/pip/menu/" class="md-nav__link">
1211 menu
1212 </a>
1213 </li>
1214
1215
1216
1217
1218
1219
1220
1221 <li class="md-nav__item">
1222 <a href="../../../package/pip/menu-item/" class="md-nav__link">
1223 menuItem
1224 </a>
1225 </li>
1226
1227
1228
1229
1230
1231
1232
1233 <li class="md-nav__item">
1234 <a href="../../../package/pip/object-type/" class="md-nav__link">
1235 objectType
1236 </a>
1237 </li>
1238
1239
1240
1241
1242
1243
1244
1245 <li class="md-nav__item">
1246 <a href="../../../package/pip/object-type-definition/" class="md-nav__link">
1247 objectTypeDefinition
1248 </a>
1249 </li>
1250
1251
1252
1253
1254
1255
1256
1257 <li class="md-nav__item">
1258 <a href="../../../package/pip/option/" class="md-nav__link">
1259 option
1260 </a>
1261 </li>
1262
1263
1264
1265
1266
1267
1268
1269 <li class="md-nav__item">
1270 <a href="../../../package/pip/page/" class="md-nav__link">
1271 page
1272 </a>
1273 </li>
1274
1275
1276
1277
1278
1279
1280
1281 <li class="md-nav__item">
1282 <a href="../../../package/pip/pip/" class="md-nav__link">
1283 pip
1284 </a>
1285 </li>
1286
1287
1288
1289
1290
1291
1292
1293 <li class="md-nav__item">
1294 <a href="../../../package/pip/script/" class="md-nav__link">
1295 script
1296 </a>
1297 </li>
1298
1299
1300
1301
1302
1303
1304
1305 <li class="md-nav__item">
1306 <a href="../../../package/pip/smiley/" class="md-nav__link">
1307 smiley
1308 </a>
1309 </li>
1310
1311
1312
1313
1314
1315
1316
1317 <li class="md-nav__item">
1318 <a href="../../../package/pip/sql/" class="md-nav__link">
1319 sql
1320 </a>
1321 </li>
1322
1323
1324
1325
1326
1327
1328
1329 <li class="md-nav__item">
1330 <a href="../../../package/pip/style/" class="md-nav__link">
1331 style
1332 </a>
1333 </li>
1334
1335
1336
1337
1338
1339
1340
1341 <li class="md-nav__item">
1342 <a href="../../../package/pip/template/" class="md-nav__link">
1343 template
1344 </a>
1345 </li>
1346
1347
1348
1349
1350
1351
1352
1353 <li class="md-nav__item">
1354 <a href="../../../package/pip/template-listener/" class="md-nav__link">
1355 templateListener
1356 </a>
1357 </li>
1358
1359
1360
1361
1362
1363
1364
1365 <li class="md-nav__item">
1366 <a href="../../../package/pip/user-group-option/" class="md-nav__link">
1367 userGroupOption
1368 </a>
1369 </li>
1370
1371
1372
1373
1374
1375
1376
1377 <li class="md-nav__item">
1378 <a href="../../../package/pip/user-menu/" class="md-nav__link">
1379 userMenu
1380 </a>
1381 </li>
1382
1383
1384
1385
1386
1387
1388
1389 <li class="md-nav__item">
1390 <a href="../../../package/pip/user-notification-event/" class="md-nav__link">
1391 userNotificationEvent
1392 </a>
1393 </li>
1394
1395
1396
1397
1398
1399
1400
1401 <li class="md-nav__item">
1402 <a href="../../../package/pip/user-option/" class="md-nav__link">
1403 userOption
1404 </a>
1405 </li>
1406
1407
1408
1409
1410
1411
1412
1413 <li class="md-nav__item">
1414 <a href="../../../package/pip/user-profile-menu/" class="md-nav__link">
1415 userProfileMenu
1416 </a>
1417 </li>
1418
1419
1420
1421 </ul>
1422 </nav>
1423 </li>
1424
1425
1426
1427
1428
1429
1430
1431 <li class="md-nav__item">
1432 <a href="../../../package/database-php-api/" class="md-nav__link">
1433 Database PHP API
1434 </a>
1435 </li>
1436
1437
1438
1439 </ul>
1440 </nav>
1441 </li>
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453 <li class="md-nav__item md-nav__item--nested">
1454
1455
1456 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6" type="checkbox" id="__nav_6" >
1457
1458 <label class="md-nav__link" for="__nav_6">
1459 Migration
1460 <span class="md-nav__icon md-icon"></span>
1461 </label>
1462 <nav class="md-nav" aria-label="Migration" data-md-level="1">
1463 <label class="md-nav__title" for="__nav_6">
1464 <span class="md-nav__icon md-icon"></span>
1465 Migration
1466 </label>
1467 <ul class="md-nav__list" data-md-scrollfix>
1468
1469
1470
1471
1472
1473
1474 <li class="md-nav__item md-nav__item--nested">
1475
1476
1477 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_1" type="checkbox" id="__nav_6_1" >
1478
1479 <label class="md-nav__link" for="__nav_6_1">
1480 Migrating from WSC 5.3
1481 <span class="md-nav__icon md-icon"></span>
1482 </label>
1483 <nav class="md-nav" aria-label="Migrating from WSC 5.3" data-md-level="2">
1484 <label class="md-nav__title" for="__nav_6_1">
1485 <span class="md-nav__icon md-icon"></span>
1486 Migrating from WSC 5.3
1487 </label>
1488 <ul class="md-nav__list" data-md-scrollfix>
1489
1490
1491
1492
1493
1494 <li class="md-nav__item">
1495 <a href="../../../migration/wsc53/php/" class="md-nav__link">
1496 PHP API
1497 </a>
1498 </li>
1499
1500
1501
1502
1503
1504
1505
1506 <li class="md-nav__item">
1507 <a href="../../../migration/wsc53/session/" class="md-nav__link">
1508 Session Handling and Authentication
1509 </a>
1510 </li>
1511
1512
1513
1514
1515
1516
1517
1518 <li class="md-nav__item">
1519 <a href="../../../migration/wsc53/javascript/" class="md-nav__link">
77efcd46 1520 TypeScript and JavaScript
0c5338dd
TD
1521 </a>
1522 </li>
1523
1524
1525
1526
1527
1528
1529
1530 <li class="md-nav__item">
1531 <a href="../../../migration/wsc53/templates/" class="md-nav__link">
1532 Templates
1533 </a>
1534 </li>
1535
1536
1537
1538
1539
1540
1541
1542 <li class="md-nav__item">
1543 <a href="../../../migration/wsc53/libraries/" class="md-nav__link">
1544 Third Party Libraries
1545 </a>
1546 </li>
1547
1548
1549
1550 </ul>
1551 </nav>
1552 </li>
1553
1554
1555
1556
1557
1558
1559
1560
1561 <li class="md-nav__item md-nav__item--nested">
1562
1563
1564 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_2" type="checkbox" id="__nav_6_2" >
1565
1566 <label class="md-nav__link" for="__nav_6_2">
1567 Migrating from WSC 5.2
1568 <span class="md-nav__icon md-icon"></span>
1569 </label>
1570 <nav class="md-nav" aria-label="Migrating from WSC 5.2" data-md-level="2">
1571 <label class="md-nav__title" for="__nav_6_2">
1572 <span class="md-nav__icon md-icon"></span>
1573 Migrating from WSC 5.2
1574 </label>
1575 <ul class="md-nav__list" data-md-scrollfix>
1576
1577
1578
1579
1580
1581 <li class="md-nav__item">
1582 <a href="../../../migration/wsc52/php/" class="md-nav__link">
1583 PHP API
1584 </a>
1585 </li>
1586
1587
1588
1589
1590
1591
1592
1593 <li class="md-nav__item">
1594 <a href="../../../migration/wsc52/templates/" class="md-nav__link">
1595 Templates and Languages
1596 </a>
1597 </li>
1598
1599
1600
1601
1602
1603
1604
1605 <li class="md-nav__item">
1606 <a href="../../../migration/wsc52/libraries/" class="md-nav__link">
1607 Third Party Libraries
1608 </a>
1609 </li>
1610
1611
1612
1613 </ul>
1614 </nav>
1615 </li>
1616
1617
1618
1619
1620
1621
1622
1623
1624 <li class="md-nav__item md-nav__item--nested">
1625
1626
1627 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_3" type="checkbox" id="__nav_6_3" >
1628
1629 <label class="md-nav__link" for="__nav_6_3">
1630 Migrating from WSC 3.1
1631 <span class="md-nav__icon md-icon"></span>
1632 </label>
1633 <nav class="md-nav" aria-label="Migrating from WSC 3.1" data-md-level="2">
1634 <label class="md-nav__title" for="__nav_6_3">
1635 <span class="md-nav__icon md-icon"></span>
1636 Migrating from WSC 3.1
1637 </label>
1638 <ul class="md-nav__list" data-md-scrollfix>
1639
1640
1641
1642
1643
1644 <li class="md-nav__item">
1645 <a href="../../../migration/wsc31/php/" class="md-nav__link">
1646 PHP API
1647 </a>
1648 </li>
1649
1650
1651
1652 </ul>
1653 </nav>
1654 </li>
1655
1656
1657
1658
1659
1660
1661
1662
1663 <li class="md-nav__item md-nav__item--nested">
1664
1665
1666 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_4" type="checkbox" id="__nav_6_4" >
1667
1668 <label class="md-nav__link" for="__nav_6_4">
1669 Migrating from WSC 3.0
1670 <span class="md-nav__icon md-icon"></span>
1671 </label>
1672 <nav class="md-nav" aria-label="Migrating from WSC 3.0" data-md-level="2">
1673 <label class="md-nav__title" for="__nav_6_4">
1674 <span class="md-nav__icon md-icon"></span>
1675 Migrating from WSC 3.0
1676 </label>
1677 <ul class="md-nav__list" data-md-scrollfix>
1678
1679
1680
1681
1682
1683 <li class="md-nav__item">
1684 <a href="../../../migration/wsc30/php/" class="md-nav__link">
1685 PHP API
1686 </a>
1687 </li>
1688
1689
1690
1691
1692
1693
1694
1695 <li class="md-nav__item">
1696 <a href="../../../migration/wsc30/javascript/" class="md-nav__link">
1697 JavaScript API
1698 </a>
1699 </li>
1700
1701
1702
1703
1704
1705
1706
1707 <li class="md-nav__item">
1708 <a href="../../../migration/wsc30/templates/" class="md-nav__link">
1709 Templates
1710 </a>
1711 </li>
1712
1713
1714
1715
1716
1717
1718
1719 <li class="md-nav__item">
1720 <a href="../../../migration/wsc30/css/" class="md-nav__link">
1721 CSS
1722 </a>
1723 </li>
1724
1725
1726
1727
1728
1729
1730
1731 <li class="md-nav__item">
1732 <a href="../../../migration/wsc30/package/" class="md-nav__link">
1733 Package Components
1734 </a>
1735 </li>
1736
1737
1738
1739 </ul>
1740 </nav>
1741 </li>
1742
1743
1744
1745
1746
1747
1748
1749
1750 <li class="md-nav__item md-nav__item--nested">
1751
1752
1753 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_6_5" type="checkbox" id="__nav_6_5" >
1754
1755 <label class="md-nav__link" for="__nav_6_5">
1756 Migrating from WCF 2.1
1757 <span class="md-nav__icon md-icon"></span>
1758 </label>
1759 <nav class="md-nav" aria-label="Migrating from WCF 2.1" data-md-level="2">
1760 <label class="md-nav__title" for="__nav_6_5">
1761 <span class="md-nav__icon md-icon"></span>
1762 Migrating from WCF 2.1
1763 </label>
1764 <ul class="md-nav__list" data-md-scrollfix>
1765
1766
1767
1768
1769
1770 <li class="md-nav__item">
1771 <a href="../../../migration/wcf21/php/" class="md-nav__link">
1772 PHP API
1773 </a>
1774 </li>
1775
1776
1777
1778
1779
1780
1781
1782 <li class="md-nav__item">
1783 <a href="../../../migration/wcf21/templates/" class="md-nav__link">
1784 Templates
1785 </a>
1786 </li>
1787
1788
1789
1790
1791
1792
1793
1794 <li class="md-nav__item">
1795 <a href="../../../migration/wcf21/css/" class="md-nav__link">
1796 CSS
1797 </a>
1798 </li>
1799
1800
1801
1802
1803
1804
1805
1806 <li class="md-nav__item">
1807 <a href="../../../migration/wcf21/package/" class="md-nav__link">
1808 Package Components
1809 </a>
1810 </li>
1811
1812
1813
1814 </ul>
1815 </nav>
1816 </li>
1817
1818
1819
1820 </ul>
1821 </nav>
1822 </li>
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834 <li class="md-nav__item md-nav__item--nested">
1835
1836
1837 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7" type="checkbox" id="__nav_7" >
1838
1839 <label class="md-nav__link" for="__nav_7">
1840 Tutorials
1841 <span class="md-nav__icon md-icon"></span>
1842 </label>
1843 <nav class="md-nav" aria-label="Tutorials" data-md-level="1">
1844 <label class="md-nav__title" for="__nav_7">
1845 <span class="md-nav__icon md-icon"></span>
1846 Tutorials
1847 </label>
1848 <ul class="md-nav__list" data-md-scrollfix>
1849
1850
1851
1852
1853
1854
1855 <li class="md-nav__item md-nav__item--nested">
1856
1857
1858 <input class="md-nav__toggle md-toggle" data-md-toggle="__nav_7_1" type="checkbox" id="__nav_7_1" >
1859
1860 <label class="md-nav__link" for="__nav_7_1">
1861 Tutorial Series
1862 <span class="md-nav__icon md-icon"></span>
1863 </label>
1864 <nav class="md-nav" aria-label="Tutorial Series" data-md-level="2">
1865 <label class="md-nav__title" for="__nav_7_1">
1866 <span class="md-nav__icon md-icon"></span>
1867 Tutorial Series
1868 </label>
1869 <ul class="md-nav__list" data-md-scrollfix>
1870
1871
1872
1873
1874
1875 <li class="md-nav__item">
1876 <a href="../../../tutorial/series/overview/" class="md-nav__link">
1877 Overview
1878 </a>
1879 </li>
1880
1881
1882
1883
1884
1885
1886
1887 <li class="md-nav__item">
1888 <a href="../../../tutorial/series/part_1/" class="md-nav__link">
1889 Part 1
1890 </a>
1891 </li>
1892
1893
1894
1895
1896
1897
1898
1899 <li class="md-nav__item">
1900 <a href="../../../tutorial/series/part_2/" class="md-nav__link">
1901 Part 2
1902 </a>
1903 </li>
1904
1905
1906
1907
1908
1909
1910
1911 <li class="md-nav__item">
1912 <a href="../../../tutorial/series/part_3/" class="md-nav__link">
1913 Part 3
1914 </a>
1915 </li>
1916
1917
1918
1919 </ul>
1920 </nav>
1921 </li>
1922
1923
1924
1925 </ul>
1926 </nav>
1927 </li>
1928
1929
1930
1931 </ul>
1932</nav>
1933 </div>
1934 </div>
1935 </div>
1936
1937
1938
1939 <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
1940 <div class="md-sidebar__scrollwrap">
1941 <div class="md-sidebar__inner">
1942
1943<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
1944
1945
1946
1947
1948
1949 <label class="md-nav__title" for="__toc">
1950 <span class="md-nav__icon md-icon"></span>
1951 Table of contents
1952 </label>
1953 <ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
1954
1955 <li class="md-nav__item">
1956 <a href="#abstractcachebuilder" class="md-nav__link">
1957 AbstractCacheBuilder
1958 </a>
1959
1960 <nav class="md-nav" aria-label="AbstractCacheBuilder">
1961 <ul class="md-nav__list">
1962
1963 <li class="md-nav__item">
1964 <a href="#getdataarray-parameters-string-arrayindex-array" class="md-nav__link">
1965 getData(array $parameters = [], string $arrayIndex = ''): array
1966 </a>
1967
1968</li>
1969
1970 <li class="md-nav__item">
1971 <a href="#getmaxlifetime-int" class="md-nav__link">
1972 getMaxLifetime(): int
1973 </a>
1974
1975</li>
1976
1977 <li class="md-nav__item">
1978 <a href="#resetarray-parameters-void" class="md-nav__link">
1979 reset(array $parameters = []): void
1980 </a>
1981
1982</li>
1983
1984 <li class="md-nav__item">
1985 <a href="#rebuildarray-parameters-array" class="md-nav__link">
1986 rebuild(array $parameters): array
1987 </a>
1988
1989</li>
1990
1991 </ul>
1992 </nav>
1993
1994</li>
1995
1996 </ul>
1997
1998</nav>
1999 </div>
2000 </div>
2001 </div>
2002
2003
2004 <div class="md-content" data-md-component="content">
2005 <article class="md-content__inner md-typeset">
2006
2007
9b8bddda 2008 <a href="https://github.com/WoltLab/docs.woltlab.com/edit/5.4/docs/php/api/caches_persistent-caches.md" title="Edit this page" class="md-content__button md-icon">
7124f4cb
WG
2009 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
2010 </a>
2011
0c5338dd
TD
2012
2013 <h1 id="persistent-caches">Persistent Caches<a class="headerlink" href="#persistent-caches" title="Permanent link">#</a></h1>
2014<p>Relational databases are designed around the principle of normalized data that
2015is organized across clearly separated tables with defined releations between
2016data rows. While this enables you to quickly access and modify individual rows
2017and columns, it can create the problem that re-assembling this data into a more
2018complex structure can be quite expensive.</p>
2019<p>For example, the user group permissions are stored for each user group and each
2020permissions separately, but in order to be applied, they need to be fetched and
2021the cumulative values across all user groups of an user have to be calculated.
2022These repetitive tasks on barely ever changing data make them an excellent
2023target for caching, where all sub-sequent requests are accelerated because they
2024no longer have to perform the same expensive calculations every time.</p>
2025<p>It is easy to get lost in the realm of caching, especially when it comes to the
2026decision if you should use a cache or not. When in doubt, you should opt to not
2027use them, because they also come at a hidden cost that cannot be expressed through
2028simple SQL query counts. If you haven't already, it is recommended that you read
2029the <a href="../caches/">introduction article on caching</a> first, it provides a bit
2030of background on caches and examples that should help you in your decision.</p>
2031<h2 id="abstractcachebuilder"><code>AbstractCacheBuilder</code><a class="headerlink" href="#abstractcachebuilder" title="Permanent link">#</a></h2>
2032<p>Every cache builder should derive from the base class <a href="https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/cache/builder/AbstractCacheBuilder.class.php">AbstractCacheBuilder</a>
2033that already implements the mandatory interface <a href="https://github.com/WoltLab/WCF/blob/master/wcfsetup/install/files/lib/system/cache/builder/ICacheBuilder.class.php">ICacheBuilder</a>.</p>
2034<div class="highlight"><pre><span></span><code><span class="o">&lt;?</span><span class="nx">php</span>
2035<span class="k">namespace</span> <span class="nx">wcf\system\cache\builder</span><span class="p">;</span>
2036
2037<span class="k">class</span> <span class="nc">ExampleCacheBuilder</span> <span class="k">extends</span> <span class="nx">AbstractCacheBuilder</span> <span class="p">{</span>
2038 <span class="c1">// 3600 = 1hr</span>
2039 <span class="k">protected</span> <span class="nv">$maxLifetime</span> <span class="o">=</span> <span class="mi">3600</span><span class="p">;</span>
2040
2041 <span class="k">public</span> <span class="k">function</span> <span class="nf">rebuild</span><span class="p">(</span><span class="k">array</span> <span class="nv">$parameters</span><span class="p">)</span> <span class="p">{</span>
2042 <span class="nv">$data</span> <span class="o">=</span> <span class="p">[];</span>
2043
2044 <span class="c1">// fetch and process your data and assign it to `$data`</span>
2045
2046 <span class="k">return</span> <span class="nv">$data</span><span class="p">;</span>
2047 <span class="p">}</span>
2048<span class="p">}</span>
2049</code></pre></div>
0c5338dd
TD
2050<p>Reading data from your cache builder is quite simple and follows a consistent
2051pattern. The callee only needs to know the name of the cache builder, which
2052parameters it requires and how the returned data looks like. It does not need
2053to know how the data is retrieve, where it was stored, nor if it had to be
2054rebuild due to the maximum lifetime.</p>
2055<div class="highlight"><pre><span></span><code><span class="o">&lt;?</span><span class="nx">php</span>
2056<span class="k">use</span> <span class="nx">wcf\system\cache\builder\ExampleCacheBuilder</span><span class="p">;</span>
2057
2058<span class="nv">$data</span> <span class="o">=</span> <span class="nx">ExampleCacheBuilder</span><span class="o">::</span><span class="na">getInstance</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">getData</span><span class="p">(</span><span class="nv">$parameters</span><span class="p">);</span>
2059</code></pre></div>
0c5338dd
TD
2060<h3 id="getdataarray-parameters-string-arrayindex-array"><code>getData(array $parameters = [], string $arrayIndex = ''): array</code><a class="headerlink" href="#getdataarray-parameters-string-arrayindex-array" title="Permanent link">#</a></h3>
2061<p>Retrieves the data from the cache builder, the <code>$parameters</code> array is automatically
2062sorted to allow sub-sequent requests for the same parameters to be recognized,
2063even if their parameters are mixed. For example, <code>getData([1, 2])</code> and <code>getData([2, 1])</code>
2064will have the same exact result.</p>
2065<p>The optional <code>$arrayIndex</code> will instruct the cache builder to retrieve the data
2066and examine if the returned data is an array that has the index <code>$arrayIndex</code>.
2067If it is set, the potion below this index is returned instead.</p>
2068<h3 id="getmaxlifetime-int"><code>getMaxLifetime(): int</code><a class="headerlink" href="#getmaxlifetime-int" title="Permanent link">#</a></h3>
2069<p>Returns the maximum lifetime of a cache in seconds. It can be controlled through
2070the <code>protected $maxLifetime</code> property which defaults to <code>0</code>. Any cache that has
2071a lifetime greater than 0 is automatically discarded when exceeding this age,
2072otherwise it will remain forever until it is explicitly removed or invalidated.</p>
2073<h3 id="resetarray-parameters-void"><code>reset(array $parameters = []): void</code><a class="headerlink" href="#resetarray-parameters-void" title="Permanent link">#</a></h3>
2074<p>Invalidates a cache, the <code>$parameters</code> array will again be ordered using the same
2075rules that are applied for <code>getData()</code>.</p>
2076<h3 id="rebuildarray-parameters-array"><code>rebuild(array $parameters): array</code><a class="headerlink" href="#rebuildarray-parameters-array" title="Permanent link">#</a></h3>
2077<p><em>This method is protected.</em></p>
2078<p>This is the only method that a cache builder deriving from <code>AbstractCacheBuilder</code>
2079has to implement and it will be invoked whenever the cache is required to be
2080rebuild for whatever reason.</p>
2081
4a5c32e1
WG
2082
2083
2084
2085<hr>
2086<div class="md-source-date">
2087 <small>
2088
2089 Last update: 2021-01-08
2090
2091 </small>
2092</div>
2093
2094
0c5338dd
TD
2095
2096
2097
2098
2099
2100
2101 </article>
2102 </div>
2103 </div>
fb962f09 2104
0c5338dd
TD
2105 </main>
2106
2107
2108<footer class="md-footer">
2109
6923e968
WG
2110 <nav class="md-footer__inner md-grid" aria-label="Footer">
2111
2112 <a href="../caches/" class="md-footer__link md-footer__link--prev" rel="prev">
2113 <div class="md-footer__button md-icon">
2114 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
2115 </div>
2116 <div class="md-footer__title">
2117 <div class="md-ellipsis">
2118 <span class="md-footer__direction">
2119 Previous
2120 </span>
2121 Overview
2122 </div>
2123 </div>
2124 </a>
2125
2126
2127 <a href="../caches_runtime-caches/" class="md-footer__link md-footer__link--next" rel="next">
2128 <div class="md-footer__title">
2129 <div class="md-ellipsis">
2130 <span class="md-footer__direction">
2131 Next
2132 </span>
2133 Runtime Caches
2134 </div>
2135 </div>
2136 <div class="md-footer__button md-icon">
2137 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
2138 </div>
2139 </a>
2140
2141 </nav>
2142
0c5338dd
TD
2143 <div class="md-footer-meta md-typeset">
2144 <div class="md-footer-meta__inner md-grid">
2145 <div class="md-footer-copyright">
2146
2147 <div class="md-footer-copyright__highlight">
2148 Copyright © 2020 WoltLab GmbH
2149 </div>
2150
2151 Made with
2152 <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
2153 Material for MkDocs
2154 </a>
fb88dc6e 2155
0c5338dd
TD
2156 </div>
2157 <div class="md-footer-copyright">
2158 <a href="https://www.woltlab.com/legal-notice/">Legal Notice</a>
2159 <a href="https://www.woltlab.com/privacy-policy/">Privacy Policy</a>
2160</div>
2161 </div>
2162 </div>
2163</footer>
2164
2165 </div>
2166 <div class="md-dialog" data-md-component="dialog">
2167 <div class="md-dialog__inner md-typeset"></div>
2168 </div>
fb962f09 2169 <script id="__config" type="application/json">{"base": "../../..", "features": [], "translations": {"clipboard.copy": "Copy to clipboard", "clipboard.copied": "Copied to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.placeholder": "Type to start searching", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.term.missing": "Missing"}, "search": "../../../assets/javascripts/workers/search.fe42c31b.min.js", "version": {"provider": "mike"}}</script>
0c5338dd
TD
2170
2171
fb962f09 2172 <script src="../../../assets/javascripts/bundle.d892486b.min.js"></script>
0c5338dd
TD
2173
2174
2175 </body>
2176</html>