Je crée un travail cron qui s'exécute en dehors de WordPress. Du point de vue du développement, cela facilite le débogage et la création de scripts de nettoyage ou de tâches cron, en exécutant simplement une commande comme celle-ci sur la ligne de commande:
php myfile.php
Mon problème est que WordPress retarde en quelque sorte toutes les sorties ... généralement lorsque vous exécutez des fichiers php comme celui-ci, la sortie est générée sur votre écran en temps réel.
Est-ce que quelqu'un sait comment empêcher WP de retarder toutes les sorties jusqu'à la fin du travail? C'est probablement un paramètre simple qui me manque lors de l'exécution du fichier PHP, ou une constante quelconque, mais je ne suis pas sûr.
Dans le code suivant, vous vous attendriez à avoir un délai d'une seconde entre chaque sortie, à la place, j'obtiens actuellement toutes les informations imprimées à la fin, à la fois:
set_time_limit( 0 );
ini_set( "memory_limit", "64M" );
ob_start();
require_once( dirname( __FILE__ ) . '/wp-load.php' ); // you need to adjust this to your path
ob_end_clean();
global $wpdb;
$q = $wpdb->prepare ("SELECT * FROM wp_posts LIMIT 5");
$results = $wpdb->get_results ($q);
echo "found " . count ($results) . "\n";
foreach ($results as $post)
{
echo $post->post_title . "\n";
sleep(1);
}
echo "\n\ndone";
la source
Réponses:
Après quelques tests, WP Super Cache et W3 Total Cache ne libèrent pas le tampon (ni empêchent le tampon d'être libéré).
La désactivation du "délai de sortie" est simple et dépend du plugin de mise en cache impliqué.
WP Super Cache :
Cela devrait être ajouté après l'inclusion
wp-load.php
, cela arrête toute mise en cache morte dans ses pistes et vide le tampon.Cache total W3 :
Comme ci-dessus, appelez après avoir inclus
wp-load.php
, de la même manière que ce que vous avez là-bas; devrait fonctionner avec simplement le vidage, W3 Total Cache démarre le tampon, mais il ne semble pas empêcher son vidage en soi. À en juger par la façon dont votre sortie est toujours mise en cache et le rinçage ne fonctionne pas, je dirais que vous avez WP Super Cache, qui est plus agressif.Assurez-vous de ne pas démarrer un nouveau tampon avant de l'inclure
wp-load.php
, sinon vous aurez un tampon dans un tampon (bufferception?), Et devrez vider deux fois ou plus.la source
wp_cache_disable()
c'est particulier à WP Super Cache. Je vais regarder dans W3 Total Cache pour voir comment il peut être désactivé de manière similaire, en utilisantob_end_flush
travaillé pour moi. Quels sont vos paramètres et version de W3 Total Cache?Désactivez tous les plugins que vous pourriez avoir qui font la mise en cache de la page entière. WP-Super-Cache, W3 Total Cache, etc.
WordPress ne "retarde pas la sortie". Mais les plugins de mise en cache de page entière le font généralement. C'est parce qu'ils essaient d'obtenir cette sortie et de l'enregistrer quelque part, pour une utilisation ultérieure dans la diffusion de la page. Ainsi, la sortie de la page est retardée jusqu'à la fin, où le plugin peut la mettre en cache.
la source