diff options
author | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
---|---|---|
committer | Yaco <franco@reevo.org> | 2020-06-04 11:01:00 -0300 |
commit | fc7369835258467bf97eb64f184b93691f9a9fd5 (patch) | |
tree | daabd60089d2dd76d9f5fb416b005fbe159c799d /www/wiki/docs/deferred.txt |
first commit
Diffstat (limited to 'www/wiki/docs/deferred.txt')
-rw-r--r-- | www/wiki/docs/deferred.txt | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/www/wiki/docs/deferred.txt b/www/wiki/docs/deferred.txt new file mode 100644 index 00000000..9a62fda9 --- /dev/null +++ b/www/wiki/docs/deferred.txt @@ -0,0 +1,36 @@ +deferred.txt + +A few of the database updates required by various functions here can be +deferred until after the result page is displayed to the user. For example, +updating the view counts, updating the linked-to tables after a save, etc. PHP +does not yet have any way to tell the server to actually return and disconnect +while still running these updates (as a Java servelet could), but it might have +such a feature in the future. + +We handle these by creating a deferred-update object and putting those objects +on a global list, then executing the whole list after the page is displayed. We +don't do anything smart like collating updates to the same table or such +because the list is almost always going to have just one item on it, if that, +so it's not worth the trouble. + +Since 1.6 there is a 'job queue' in the jobs table, which is used to update +link tables of transcluding pages after edits; this may be extended in the +future to more general background tasks. + +Job queue items are fetched out of the queue and run either at a random rate +during regular page views (by default) or by a batch process which can be run +via maintenance/runJobs.php. + +Currently there are a few different types of jobs: + + refreshLinks + Used to refresh the database tables that store the links between pages. + When a page is changed, all pages using that page are also cleared by + inserting a new job for all those pages. Each job refreshes only one page. + + htmlCacheUpdate + Clear caches when a template is changed to ensure that changes can be seen. + Each job clears $wgUpdateRowsPerJob pages (300 by default). + + enotifNotify + Used to send mail using the job queue. |