Download the PHP package namelesscoder/asynchronous-reference-indexing without Composer

On this page you can find all versions of the php package namelesscoder/asynchronous-reference-indexing. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package asynchronous-reference-indexing

Asynchronous Reference Indexing for TYPO3

Delegates reference index updating to an asynchronous queue, processed by CLI / scheduler

What does it do?

Provides a couple of things:

Depending on how often your editors perform record imports, copies, deletions etc. this can over time save many, many hours of waiting for the TYPO3 backend to respond.

For further information about the performance aspects see the "Background" section below.

Installing

Only available through Packagist (or via GitHub). Installation via Composer is recommended:

Then enable the extension in TYPO3. This can be done with a CLI command:

Word of warning

Failing to update the reference index can have negative effects on your site in some cases, both in frontend and backend. You are advised to add a scheduler task or cronjob for the included command controller and set the frequency to a very low value such as once every minute. The controller maintains a lock file and prevents parallel executions, so frequent runs are safe.

Note that this extension consistently captures all of the current reference indexing, including that which you can trigger using the existing (non-Extbase) CLI command or via the "DB check" backend module which is added when you install the lowlevel system extension. Using either of these methods to force reference index updating will instead fill the queue for the command controller included with this extension so that all existing records which have relations will be processed on the next run.

Possible side effects

Delaying update of the reference index has one main side effect: if the editor tries to delete a record whose relations have not been indexed, an appropriate warning may not be shown.

Secondary side effect is in listing of relationships between records. Such information will be updated only when the command controller runs.

Frontend rendering should not be affected negatively.

Usage

To re-index a site from scratch you would normally execute the following command, if you have a lot of garbage in the sys_refindex table you might wan't to truncate it before:

Afterwards you can update the sys_refindex by executing the command:

Alternatively you can setup a Scheduler Task to execute the command at a certain interval.

Background

This community extension exists for one reason alone: increasing responsiveness of the TYPO3 backend when performing record operations. Due to the internal structure of the ReferenceIndex class in TYPO3, any record operation which might potentially change references causes an extreme amount of SQL traffic.

At the time of writing this (2016-12-04) the problem can be illustrated as follows:

A significant effort has already been made to improve the reference indexing performance, however, all improvements are inevitably minor without a complete rewrite of the entire reference indexing logic. Again, at the time of writing this, the ReferenceIndex and RelationHandler classes are mutually dependent and will recursively call each other, thus further compounding the performance problem described above. Since these technical challenges are very hard to overcome, this extension is presented as a temporary solution to increase responsiveness of record operations in TYPO3 by upwards of 90% reduction in wall time.

You read that right. 90% - nine-zero percent.

Credit

This work and all preceding investigation was sponsored by Systime. Systime is a Danish online publishing firm specialising in "i-books" for the educational market, and they faced severe problems with reference indexing in particular.

References

(performance profiles not linked as they are not permanently online)


All versions of asynchronous-reference-indexing with dependencies

PHP Build Version
Package Version
Requires typo3/cms-backend Version ^8|^9
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package namelesscoder/asynchronous-reference-indexing contains the following files

Loading the files please wait ....