Pregunta sobre Stop Generating Unnecessary Thumbnails (Formerly Stop Generating Image Sizes) de Wordpress:

Las sesiones deben eliminarse

Un usuario pregunt贸 馃憞

Ejecut茅 una pista de apilamiento en el sitio de un cliente usando este plugin y la versi贸n pro.

Estamos viendo que los procesos secundarios PHP-FPM tardan de 10 a 30 segundos y m谩s en obtener una sesi贸n. Parece estar esperando hasta que el sistema operativo libere la manada.

lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins/includes/Schedule.php", {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins/includes", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED/httpdocs", {st_mode=S_IFDIR|0750, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED", {st_mode=S_IFDIR|0710, st_size=4096, ...}) = 0
lstat("/var/www/vhosts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www/vhosts/URL_REDACTED", {st_mode=S_IFDIR|0710, st_size=4096, ...}) = 0
lstat("/var/www/vhosts", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var/www", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
lstat("/var", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
open("/var/www/vhosts/URL_REDACTED/httpdocs/wp-content/plugins/share-logins/includes/Schedule.php", O_RDONLY) = 15
fstat(15, {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
fstat(15, {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
fstat(15, {st_mode=S_IFREG|0644, st_size=1093, ...}) = 0
mmap(NULL, 1093, PROT_READ, MAP_SHARED, 15, 0) = 0x7f3616e0b000
munmap(0x7f3616e0b000, 1093)            = 0
close(15)                               = 0
open("/var/lib/php/session/sess_ht2uft2nq7nd0g3casrc8ge2vg", O_RDWR|O_CREAT|O_NOFOLLOW, 0600) = 15
fstat(15, {st_mode=S_IFREG|0600, st_size=730, ...}) = 0
getuid()                                = 10000
flock(15, LOCK_EX^Cstrace: Process 13399 detached

驴Puede eliminar la sesi贸n durante () si no hay m谩s tareas para programar o tal vez hay una configuraci贸n de rehacer que permitir谩 a redis administrar y almacenar los datos?

Gracias, Wil.

(@codexpert)

Hace 1 a帽o, 3 meses

Hola @developerwil, Gracias por se帽alar esto. Arreglaremos esto lo antes posible.

El sarampi贸n, codexpert
https://codexpert.io

(@neilatw)

Hace 1 a帽o, 3 meses

Hola Codexpert, represento al cliente de Wil que tiene problemas importantes con el tema anterior.

驴Puedo preguntar cu谩ndo es probable que se publique un acuerdo?

Gracias

Neil Atwood

(@codexpert)

Hace 1 a帽o, 3 meses

Hola @neilatw, Nuestro equipo de desarrollo est谩 trabajando en ello y esperamos que puedan incluirlo en la pr贸xima versi贸n: ETA a principios del pr贸ximo mes.

Gracias

(@neilatw)

Hace 1 a帽o, 2 meses

Hola chicos, 驴Alg煤n avance en este tema? Esto todav铆a est谩 matando nuestro sitio con regularidad, y estamos entrando en nuestra temporada alta. Realmente quiero una soluci贸n permanente para esto lo antes posible.

Gracias

(@ mukto90)

Hace 1 a帽o, 2 meses

Hola @neilatw, Hoy hemos lanzado la v2.1.2. 驴Puede confirmar si resuelve su problema?

Gracias

(@desarrolladorwil)

Hace 1 a帽o, 2 meses

Hola @codexpert

Acabo de ejecutar el c贸digo diff en 2.1.1 y 2.1.2 y la 煤nica diferencia que veo es que est谩 configurando el par谩metro recordar sus cookies wp en verdadero.

Esto no aborda la mayor铆a de las sesiones PHP que crea en el modo /includes/Schedule/Schedule.php __construct ().

No hay lugar en el c贸digo en el que use session_destroy () para eliminar estas sesiones php que se ejecutan en todos los subprocesos secundarios de Apache.

Aqu铆 est谩 mi c贸digo revisado que parece ayudar con el problema; tenga en cuenta que verifico si hay alguna URL programada para ejecutarse y si no elimino la sesi贸n PHP creada.

<?php
/**
 * All trigger facing functions
 */

namespace codexpertShare_Logins;

/**
 * if accessed directly, exit.
 */
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * @package Plugin
 * @subpackage Schedule
 * @author Nazmul Ahsan <[email protected]>
 */
class Schedule extends Hooks {

    /**
     * Constructor function
     */
    public function __construct( $plugin ) {
        $this->name     = $plugin['Name'];
        $this->ncrypt   = ncrypt();
        if ( session_status() == PHP_SESSION_NONE ) {
            session_start();
        }
    }

    public function run() {
        $_scheduled_urls = cx_get_scheduled_urls();
        if( is_array( $_scheduled_urls ) && count( $_scheduled_urls ) > 0 ) :

		foreach ( $_scheduled_urls as $url ) {
			echo "<script src='{$url}'></script>";

            if( defined( 'CXSL_DEBUG' ) && CXSL_DEBUG ) {
                @parse_str( $url );
                cx_add_log( 'trigger', 'outgoing', $this->ncrypt->decrypt( $user_login ), cx_get_route_home( $url ) );
            }
		}

        cx_clean_scheduled_urls();
        endif;
        // ZPD 21/10/2019 - destroy session if scheduled URLs are empty
        if( empty( cx_get_scheduled_urls() ) ) {
            session_destroy();
        }
    }
}

驴Puede enviar estos comentarios a los desarrolladores y pedirles que eliminen correctamente las sesiones PHP que est谩n creando? Est谩 creando un gran problema de memoria y php en mi servidor cliente.

El problema es crucial hasta el punto en que ahora nos vemos obligados a considerar plugins de SSO alternativos.

Me complace trabajar con sus desarrolladores para resolver este problema. Me puedes encontrar en https://github.com/DeveloperWil

Saludos, Wil.

(@ mukto90)

Hace 1 a帽o, 2 meses

Gracias @developerwil. Veremos esto.

(@desarrolladorwil)

Hace 1 a帽o, 2 meses

Despu茅s de instalar New Relic en el servidor para averiguar por qu茅 est谩 ocupando tantos recursos, descubr铆 que session_start () tarda entre 11 y 12 segundos en iniciarse.

Debido a que estos se ejecutan a trav茅s de admin-ajax.php, est谩n bloqueando efectivamente el script PHP para que no contin煤e, lo que resulta en un alto uso de memoria y un l铆mite de tiempo de los subprocesos secundarios de Apache.

Esto se confirm贸 en los siguientes hilos:
https://stackoverflow.com/questions/13772074/session-start-takes-very-long-time
http://konrness.com/php5/how-to-prevent-blocking-php-requests/

– SNIP – PHP Problem escribe sus datos de sesi贸n en un archivo de forma predeterminada. Cuando se solicita un script PHP que inicia la sesi贸n (session_start ()), este archivo de sesi贸n se bloquea. Esto significa que si su p谩gina web realiza m煤ltiples solicitudes de scripts PHP, por ejemplo, para cargar contenido a trav茅s de Ajax, todos los intentos pueden ser bloquear la sesi贸n y bloquear las otras solicitudes para completar.

Todas las dem谩s solicitudes se colgar谩n en session_start () hasta que se desbloquee el archivo de sesi贸n. Esto es especialmente malo si una de sus solicitudes de Ajax es relativamente larga.

Resoluci贸n El archivo de sesi贸n permanece bloqueado hasta que se completa la secuencia de comandos o la sesi贸n se cierra manualmente. Para evitar que se bloqueen varias aplicaciones PHP (que requieren datos de $ _SESSION), puede iniciar la sesi贸n y luego cerrarla. Esto desbloquear谩 el archivo de sesi贸n y permitir谩 que las otras solicitudes contin煤en ejecut谩ndose, incluso antes de que se complete la aplicaci贸n inicial. FIN DE SNIP –

Tengo el archivo log-logins modified functions.php line 181:

if( ! function_exists( 'cx_set_scheduled_urls' ) ) :
function cx_set_scheduled_urls( $urls ) {
    $_SESSION['_share-logins_scheduled_urls'] = base64_encode( serialize( $urls ) );
    // ZPD 23/11/2019 - close the session
    session_write_close();
}
endif;

share-logins-pro includes functions.pgp l铆nea: 149

if( ! function_exists( 'cx_set_scheduled_urls' ) ) :
function cx_set_scheduled_urls( $urls ) {
    $_SESSION['_share-logins_scheduled_urls'] = base64_encode( serialize( $urls ) );
    // ZPD 23/11/2019 - close the session
    session_write_close();
}

Para cerrar la sesi贸n d茅jelo disponible para su lectura.

Eventualmente, funcionar铆a mucho m谩s r谩pido si se almacena en el SS.

Saludos, Wil.

(@ mukto90)

Hace 1 a帽o, 2 meses

Gracias @developerwil. Estamos trabajando en ello y lo incluiremos en la pr贸xima versi贸n, ETA, la semana que viene.

(@codexpert)

Hace 1 a帽o, 2 meses

Hola @developerwil, Gracias por avisar.

Como es un tema importante, hemos lanzado una versi贸n m谩s reciente. Actualice sus plugins.

Nota: como cr茅dito, indicamos su nombre en el c贸digo.

Tuyo sinceramente

驴Solucion贸 tu problema??

0 / 0

Deja una respuesta 0

Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *