bonjour,
ce probleme a quelque mois il concerne unquement une page de mon site , elle se met en page blanche et il. faut que je reactualise deux ou trois fois pour que ca marche, ca ne le fait pas tout le temp.
y a t il un prob de cache ou de stockage ?

merci de votre aide

Ce que je veux

Décrivez ce que vous cherchez à obtenir.

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

31 réponses


Salut, tu peux partager le site? et la partie du code qui concerne la page? Ce serait plus simple pour aider x)

en faite c est le back office.
quel code voulez vous

Ah okay, donc le code suffira x)

Pour le code Alors il me faut le controller et la vue :)

ok je t envoi ca dans la journée , pour info avant ca marchait mais la faut je clique plusieur fois

Route::get('view-cars', [
'as' => 'get.view.cars',
'uses' => 'CarsController@getViewCars'
]);

}

public function getViewCars() {
    $cars = Car::orderBy('created_at', 'DESC')->get();
    return view('admin.carmanager.all', compact('cars'));
}

pour la vue il y a 450 ligne
tuveux lesquels?

Alors dans la view tu doit surement avoir un @foreach($cars as $car), il me faudrait ce foreach avec son contenu

Ah et aussi quand tu regardes la console qui lance pphp artisan serve, ou dans l'inspecteur la partie console et la partie network regardes si il y'a un message d'erreur ou un statut autre que 200 qui apparait quand la page blanche est affichée, si oui fait voir le message :p

@foreach($cars as $car)
@if($i % 2 == 0)
<?php $class = "odd"; ?>
@else
<?php $class = "even"; ?>
@endif

                                            <tr class="{{ $class }} pointer">
                                                <td class="a-center ">
                                                    <div class="" style="position: relative;"><input type="checkbox" class="checkMeAll" name="car_id[]" value="{{ $car->id }}" style=""></div>
                                                </td>
                                                <td class=" ">
                                                    <?php $featuredImage = 0; ?>
                                                    @if($car->images->count() != 0)
                                                        @foreach($car->images as $image)

MERCI BEAUCOUP

de rien x)
Alors il me faudrait aussi la suite de la view, jusqu'au deuxième @endforeach (y a un premier @endForeach pour fermer $car->imageset un deuxième qui ferme $cars

Faudrait tout le block

Ensuite tu fait comment pour lancer le serveur? php artisan serve, apache ou nginx + php-fpm ?

@foreach($cars as $car)
@if($i % 2 == 0)
<?php $class = "odd"; ?>
@else
<?php $class = "even"; ?>
@endif

                                            <tr class="{{ $class }} pointer">
                                                <td class="a-center ">
                                                    <div class="" style="position: relative;"><input type="checkbox" class="checkMeAll" name="car_id[]" value="{{ $car->id }}" style=""></div>
                                                </td>
                                                <td class=" ">
                                                    <?php $featuredImage = 0; ?>
                                                    @if($car->images->count() != 0)
                                                        @foreach($car->images as $image)

                                                            @if($image->featured == 1)
                                                                <img style="height: 100px; width: 140px" src="{{ $image->medium }}">

                                                                <?php $featuredImage = 1; ?>
                                                                <?php break; ?>
                                                            @endif

                                                        @endforeach

                                                        @if($featuredImage == 0)
                                                            <img style="height: 50px; width: 70px" src="{{ asset('placeholder.jpg') }}" alt="">
                                                        @endif
                                                    @else
                                                        <img style="height: 50px; width: 70px" src="{{ asset('placeholder.jpg') }}" alt="">
                                                    @endif
                                                </td>
                                                <td class=" ">{{ $car->referenceID }}</td>
                                                <td class=" ">{{ $car->title }}</td>
                                                <td class=" ">{{ $car->seller }}</td>
                                                <td class=" ">{{ $car->brand }}</td>
                                                <td class=" ">{{ $car->model }}</td>
                                                <td class=" ">{{ $car->year }}</td>
                                                <!-- <td class="a-right a-right ">@if(is_numeric($car->price)){{ '&euro;' . number_format($car->price) }} @endif</td> -->
                                                <td class="a-right a-right ">{{ '&euro;' .number_format($car->original_price ,2, ',', '') }}</td>
                                                <td>

                                                    <?php
                                                        $convertedPrice = 0;
                                                        if(is_numeric($car->price))
                                                            $convertedPrice = $car->price;

                                                        $finalPrice = $convertedPrice;

                                                        $setting = \App\Setting::where('enabled', '1');
                                                        $addOnPrice = 0;

                                                        if($setting->count()) {
                                                            $setting = $setting->first();
                                                            if($setting->percentage != 0) {
                                                                $addOnPrice = ($finalPrice * $setting->percentage) / 100;
                                                            } else if($setting->fixed_rate != 0) {
                                                                $addOnPrice = $setting->fixed_rate;
                                                            } else if($setting->id == 1) {
                                                                $percentage = \App\Http\Controllers\GlobalPercentageSettingsController::getRangePercentageSingle($finalPrice);

                                                                $addOnPrice = ($finalPrice * $percentage) / 100;
                                                            }
                                                        }

                                                        $finalPrice += $addOnPrice;
                                                        $finalPrice = round($finalPrice);

                                                        $ostatak = $finalPrice % 100;

                                                        $finalPrice = $finalPrice - $ostatak + 100;

                                                    ?>
                                                    <!-- {{ '&euro;' .number_format($finalPrice) }} -->
                                                    {{ '&euro;' .number_format($car->price ,2, ',', '') }}
                                                </td>

                                                <?php 
                                                    $created_dt = new DateTime($car->created_at);
                                                ?>
                                                <td class=" ">{{ $created_dt->format('d/m/Y') }}</td>
                                                <td class="last">
                                                    <a href="{{ route('get.edit.car', $car->id) }}" type="button" class="btn btn-info btn-xs"><i class="fa fa-pencil-square-o" aria-hidden="true"></i> Modifier</a>
                                                    <a href="{{ route('get.delete.car', $car->id) }}" type="button" class="btn btn-danger btn-xs"><i class="fa fa-trash" aria-hidden="true"></i> Supprimer</a>
                                                </td>
                                            </tr>
                                            <?php $i++; ?>
                                        @endforeach

je travail one line mais attend je te confirme le serveur

c est le serveur APACHE

Mmmmh alors il y'a beaucoup d'actions dans la view, ça pourrait alourdir le chargement, si ça fait un timeout, ou que le size max est dépassé PHP renoncera à l'idée de charger la page (en gros c'est comme si il mettait un die() car la page est trop lourde)

Faudrait déjà alleger la page

Pour le odd/even (bon ce n'est pas un calcul lourd (a moins qu'il y'ait 1Millions de lignes) mais c'est toujours ça de gratté x))

@if($i % 2 == 0)
    <?php $class = "odd"; ?>
@else
    <?php $class = "even"; ?>
@endif

Ca peut se faire en CSS:

/* 1 sur 2 */
tbody:nth-child(2n) {
    règles pour le odd
}

tbody:nth-child(2n+1) {
    règles pour le even
}

Pour les featured:

<?php $featuredImage = 0; ?>
@if($car->images->count() != 0)
    @foreach($car->images as $image)
        @if($image->featured == 1)
            <img style="height: 100px; width: 140px" src="{{ $image->medium }}">
            <?php $featuredImage = 1; ?>
            <?php break; ?>
        @endif
    @endforeach

    @if($featuredImage == 0)
        <img style="height: 50px; width: 70px" src="{{ asset('placeholder.jpg') }}" alt="">
    @endif
@else
    <img style="height: 50px; width: 70px" src="{{ asset('placeholder.jpg') }}" alt="">
@endif

Faudrait laisser le Controlelr gérer ça:

Controller

$cars = Car::orderBy('featured', 'asc')->orderBy('created_at', 'DESC')->groupBy('featured')->get(); // En premier la liste des images featured, et les non-featured seront en dernier

View (ca pourrait être encore plus opti mais déjà ça ça réduira la charge de la view):

@if($car->images->exists())
    @foreach($car->images as $image)
        @if($image->featured == 1)
            <img style="height: 100px; width: 140px" src="{{ $image->medium }}">
        @else()
            <img style="height: 50px; width: 70px" src="{{ asset('placeholder.jpg') }}" alt="">
        @endif
    @endforeach
@else
    <img style="height: 50px; width: 70px" src="{{ asset('placeholder.jpg') }}" alt="">
@endif

Pour le dernier bloc en principe ça se fait dans le model, donc de toutes façon la view aura besoin de le charger donc ça change pas grand chose ^^'

Mais apparement dans la view le $finalPrice est commenté donc pas utilisé:

<!-- {{ '&euro;' .number_format($finalPrice) }} -->
{{ '&euro;' .number_format($car->price ,2, ',', '') }}

Du coup la view fait un gros effort de calcul pour rien :/

Maintenant au niveau du navigateur, quand tu fait inspecteur->network et que tu recharges jusqu'a la page blanche, tu as un code différent de 200? Et tu as des messages dans tes logs apache quand la page est blanche? (si tu te souvient de la date et l'heure exacte d'une page blanche pas besoin d'essayer de reproduire le bug, suffit de retrouver la date et l'heure du message apache, sinon faudra reproduire le bug et regarder le dernier message)

Bonjour merci pour la reponse, j ai ete dans le cpanel de l apache et je n ai pas d erreur maintenant pour ton information j ai un deuxieme site c est exactement le meme site au niveau back office , mais avec celui il n a pas de bug pas , je vais comme meme verifier les codes

voila le code erreurs

HTTP/1.1 500 Internal Server Error
Set-Cookie: XSRF-TOKEN=eyJpdiI6Im5cLzRKNTltRmF3VmpiU3haYmNaU0lRPT0iLCJ2YWx1ZSI6Ijl5M3Rjb2ZadHlYQ3pvT29xRTJYUFpoaThzb2VTXC9Tc3BWS0V5T05uajVhbHpWUFhNeUFRdnBcL1wvekpLQU9cL0FOUzMzVEVWYmxtTmlCb1FxS3lXdzA5dz09IiwibWFjIjoiNWJlYzNlMzlmOTVjODBlZGY0MzBlMzA0MDQ3ODFlZWQyNmRlNDg4NTc5Mjk2ZGZmNWMyODlhM2JhYjEwNzY5YiJ9; expires=Sat, 08-Jan-2022 21:21:46 GMT; Max-Age=7200; path=/, laravel_session=eyJpdiI6IkNDZlBqbnEzRk40eWlHWG51V01MVUE9PSIsInZhbHVlIjoibEhkWHdzWU83cWx2NTJWaW5XKzNUQ2UybW1WVGxvSUxwXC9HSm1KcXM1Ris3dXR2OW9xUkxIclwvZHZ2SXgwUVVIUnoxMEViZjYzb0kzNHZiM1JVOFlPZz09IiwibWFjIjoiZGE0NmM5OTlkN2Q5MTJkN2Y0MDg1MDRiZWQxZDNmNjkzM2NiMjE0MGM4NjU2MmExYzM0MDU3NDExYmU0MDJiMCJ9; expires=Sat, 08-Jan-2022 21:21:46 GMT; Max-Age=7200; path=/; HttpOnly
Content-Type: text/html; charset=UTF-8
Date: Sat, 08 Jan 2022 19:21:46 GMT, Sat, 08 Jan 2022 19:21:46 GMT
Content-Length: 0
Cache-Control: no-cache, no-cache, private
Connection: close
Server: Apache

Mmmh il y a bien une erreur, ok alors il faudrait activer le mode debug de laravel (dans la variable d'env laravel), si tu as un environnement de staging tant mieux, pareil si tu arrives a reproduire le bug en local, si cnest en prod il faudra activer le mode debug pour tester puis le desactiver
En tout cas tu as bien un code 500, donc il y'a une vraie erreur

pour le message, si le mode debug est desactivé tu auras pour seul message "internal server error", pour avoir des infos sur l'erreur il faut activer le debug

ou peut etre pas! regardes dans les logs Laravel cette fois (dans le dossier storage/logs ou storage/app/logs) y´aura peut etre l´erreur affichee

Bonjour,
j ai ete sur laravel.log
est ce que c est ca local.
ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Allowed memory size of 67108864 bytes exhausted (tried to allocate 16384 bytes) in /home/monsites/public_html/vendor/laravel/framework/src/Illuminate/Database/Connection.php:335

local.ERROR: Symfony\Component\Debug\Exception\FatalErrorException: Allowed memory size of 67108864 bytes exhausted (tried to allocate 2575923 bytes) in /home/monsites/public_html/vendor/symfony/http-foundation/Response.php:361

dans un site j ai php.ini il bug, l autre il me semble qu il n y a pas mais il bug pas .
si ca peut t aider

Okay alors ça confirme bien ce que je disais: Ton site est trop lourd et a tapé la limite de la memoire PHP ^^'

Il faudra optimiser au maximum le site en question, ou alors autre solution: dans le php.ini du site qui plante, faudra augmenter la limite de la mémoire PHP (si tu est sur un serveur cloud qui facture à l'utilisation ça va chiffrer un peu plus cher :p)

Donc dans php.ini tu as cette valeur à modifier:

memory_limit

Après c'est un peu la mauvaise méthode, à utiliser uniquement le temps d'optimiser, ensuite ce serait mieux de remettre en place la valeur initiale après avoir optimisé ton code ^^'

Mais la ça sent le gros refacto :p

Au fait dans ton back si tu ne l'as pas fait, faut que tu fasses de l'eager loading: https://laravel.com/docs/8.x/eloquent-relationships#eager-loading

Sinon pour les boucles énormes il y'a les chunks qui opère par batchs

Après je sais pas quoi proposer d'autre, en tout cas faudra optimiser au maximum :p

merci encore
; cPanel-generated php ini directives, do not edit
; Manual editing of this file may result in unexpected behavior.
; To make changes to this file, use the cPanel MultiPHP INI Editor (Home >> Software >> MultiPHP INI Editor)
; For more information, read our documentation (https://go.cpanel.net/EA4ModifyINI)

display_errors = On
max_execution_time = 30
max_input_time = 60
max_input_vars = 1000
memory_limit = 64M
post_max_size = 8M
session.gc_maxlifetime = 1440
session.save_path = "/var/cpanel/php/sessions/ea-php70"
upload_max_filesize = 2M
zlib.output_compression = On
mod_expires = On

j ai exactement le meme site il n y a pas de fichier php.ini et il bug pas est ce normal?

memory_limit = 64M

C'est le problème, le site est trop lourd pour supporter cette limite ^^'

je mets quoi tu crois?

effectivement j ai supprimé les photos et ca bug plus, par contre quand je reduit les photos ca bug aussi

(je ne comprend pourquoi l autre site il bug pas)

display_errors ACTIVE
max_execution_time 30
max_input_time 60
max_input_vars 1000
memory_limit -1 Sets max size of post data allowed. This setting also affects file upload. To upload large files, this value must be larger than upload_max_filesize. Generally speaking, memory_limit should be larger than post_max_size.

post_max_size 8M
session.gc_maxlifetime 1440
session.save_path /var/cpanel/php/sessions/ea-php70
upload_max_filesize 2M

voila le paramettrage , ca marche (j ai 16 g DE RAM) merci pour tout

Top! Avec plaisir :)

Et pour la version local installes le plugin Laravel Debugbar (faut l'activer uniquement en local, surtout pas en prod) ;)

Que faire si quelqu'un répond difficilement à vos messages? Que se passe-t-il si quelqu'un répond difficilement à votre téléphone? Et s'il ne répond pas du tout? La beauté d'une relation réside dans la réciprocité. Nous nous demandons dans nos cœurs: à quel point peut-il être difficile de répondre à temps à un ami qui, malgré le fait que la vie se déroule à un rythme effréné, s'est arrêté sur place pour penser à vous? D'autant plus que nous vivons à l'ère de la connectivité, où nous avons notre téléphone avec nous et des centaines de messages et un accès internet partout... https://annuairespageblanches.com/
La technologie moderne fournit des solutions qui facilitent la communication entre les personnes, et en même temps soulèvent de nouveaux défis concernant nos attentes les uns envers les autres et la façon dont nous interprétons la situation lorsque nous pouvons comprendre après qu’où si vous le souhaitez, envoyez un message instantané au bout du monde sur Facebook, WhatsApp, ou Messenger et l'autre personne voit tout instantanément.

Salut Greenjenni :)
Alors pour commencer ce serait mieux de recréer un autre sujet, comme ça pas de sujet multiple sur le même fil et il y'a un fil dédié à ton problème ^^

merci popotte , si tu regarder mon deuxieme sujet , pour voir si tu peux m aider ):

de rien ;) je vais voir ça