PHP 7.2 und das WSC und foreach 2

  • Betroffene App
    WoltLab Suite Core

    Servus!

    Eigentlich sollte dieses Thema ja erledigt sein,

    dennoch habe ich eben den gleichen Fehler beim Aufruf eines Artikels.

    Aufgerufene URL
    /article/5-mini-serienproduktion-in-oxford-angelaufen/
    Referrer
    https://www.r53-forum.de/article-list/
    WoltLab Suite
    3.0.11 pl 1
    PHP
    7.2.0
    Fehlermeldung
    count(): Parameter must be an array or an object that implements Countable
    Art
    wcf\system\exception\ErrorException
    Datei (Zeile)
    /var/www/vhosts/r53-forum.de/httpdocs/lib/system/WCF.class.php (313)
    Stacktrace
    1. /var/www/vhosts/r53-forum.de/httpdocs/templates/compiled/28_wcf_1_article.php (3582): wcf\system\WCF::handleError(…)
    2. /var/www/vhosts/r53-forum.de/httpdocs/lib/system/template/TemplateEngine.class.php (320): include(…)
    3. /var/www/vhosts/r53-forum.de/httpdocs/lib/page/AbstractPage.class.php (308): wcf\system\template\TemplateEngine->display(…)
    4. /var/www/vhosts/r53-forum.de/httpdocs/lib/page/AbstractPage.class.php (103): wcf\page\AbstractPage->show(…)
    5. /var/www/vhosts/r53-forum.de/httpdocs/lib/system/request/Request.class.php (83): wcf\page\AbstractPage->__run(…)
    6. /var/www/vhosts/r53-forum.de/httpdocs/lib/system/request/RequestHandler.class.php (94): wcf\system\request\Request->execute(…)
    7. /var/www/vhosts/r53-forum.de/httpdocs/index.php (9): wcf\system\request\RequestHandler->handle(…)

    Habe dann auf die PHP 7.1.12 gewechselt und die Artikel können aufgerufen werden.


    Server Infos.


    Muss gestehen, das dies zuvor funktionierte und ich gestern auf einen neuen Server

    gewechselt bin. (Dort lief die Seite ebenfalls mit 7.2.0)

    Weiter habe ich entsprechende Optimierungen wie hier im Forum angegeben umgesetzt.

    Entsprechend habe ich zuvor noch das InnoDB-Modul in der Konfiguration des MySQL-Datenbankservers aktiviert.

    Somit konnte ich dann

    z.B.:

    innodb_flush_log_at_trx_commit=2
    innodb_buffer_pool_size=3000M innodb_log_buffer_size=384M innodb_log_file_size=1028M innodb_thread_concurrency=8 innodb_fast_shutdown=1

    ... einrichten

    Beim Versuch die Datenbank weiter zu optimieren innodb_autoextend_increment, habe ich mir die ibdata1

    zerschossen was ich aber dank eines Backups des "mysql-Ordners" wieder fixen konnte.


    Hatte die Seite durchgechekt aber im Bereich der Artikel nur darauf geachtet,
    dass die Artikelangezeigt werden, was sie auch tun, hatte aber keinen Artikel selbst aufgerufen.

    Mehr habe ich nicht gemacht/verbrochen und würde mich über ein Feedback zur Behebung freuen.

    Sollte noch Daten benötigt werden, werde ich diese schnellstens nachreichen.


    Danke


    Sascha

  • Servus!

    Hmm! Dachte dies sei schon gepached, da ja

    Ansonsten hätte ich keinen Fred aufgemacht.

    Bez.

    Hallo,

    hast du möglicherweise modifizierte Templates im Einsatz?

    Wie genau meinst du das "modifiziert"

    Entsprechend wie im Link von "Scy" = selber patchen

    oder eine Sprachdatei geändert?

    Sprache "ja" - Templates "nein"

    Noch nicht! ;)


    Danke

    Sascha

  • Das sind keine Optimierungen, sondern unnötige Eingriffe in sein wahrscheinlich vorher besser konfiguriertes System.

    Allein schon der innodb_flush_log_at_trx_commit=2 ist bedenklich, damit ist die Datenbank nicht mehr ACID-konform und transaktionssicher. Für volle Transaktionssicherheit braucht es übrigens den Wert 1 sowie einen ordentlichen RAID-Controller mit Write-Buffer-Protection.

    Was die innodb_buffer_pool_size=3000M angeht... ist das schonmal kein sauberes Vielfaches...

    Zitat

    Buffer pool size must always be equal to or a multiple of innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances.

    Hast DU die Werte denn auch im Auge bzw. geprüft oder einfach nur "blind" / "stur" an der buffer_pool-Size gedreht? Wobei wir wieder bei der Eingangsaussage wäre... unnötige Eingriffe ...

    Außerdem, bei einem WSC dessen Datenbank je nach Größe des Forums natürlich variiert ist, es schon eine stolze Leistung 3 GB an aktiven DB-Daten hinzubekommen. Natürlich nur unter der Prämisse, dass die DB nur Dein WSC bedient hättest Du das locker (erstmal) bei den 128M Standard-Größe lassen können.

    Was die innodb_log_file_size=1028M angeht muss ich auch sagen... interessanter Wert. Grundsätzlich sagen die meisten best practise Empfehlungen die Logfile-Size bei maximal 25% der Bufferpool-Size anzusiedeln, darüberhinaus ist das auch ein entscheidender Wert bei der Crash-Recovery.

    Vielleicht versuchst Du Dein Glück mal mit dem mysql-Tuner-Script von Major Hayden, das bringt in der Regel ein paar taugliche best practise Empfehlungen nach einer kurzen DB-Analyse. --> https://raw.githubusercontent.com/major/MySQLTun…r/mysqltuner.pl

    Was die innodb_thread_concurrency angeht, ist in dem meisten Fällen der default Wert 0 schon optimal. Der hier gewählte Wert 8, in Verbindungen mit den anderen Entscheidungen lässt den Eindruck entstehen, als ob Du nicht wüsstest und verstehst was Du Deiner Datenbank antust.

    Einmal editiert, zuletzt von Barungar (16. Dezember 2017 um 15:10)

  • Servus!

    als ob Du wüsstest und verstehst was Du Deiner Datenbank antust.

    Nö! Das tu ich nicht und bin hier auch in einer probier und Testphase!

    Da die Seite/Forum nicht Online ist und ich mich aktuell noch austobe darf ich das! :saint:

    Es war mir auch schon klar, dass hier entsprechende HInweise zu meinen Einstellung kommen,

    aber diese waren jetzt eben aktuell, wo der Fehler von mir erkannt wurde.

    Ich habe mir das Tuner Script angesehen war mir aber nicht 100% sicher ob es noch soweit aktuell ist.

    Werde es mir anschauen und eventuell einsetzen.

    Danke dir.


    Bezüglich des "Fixed PHP7.2 issue" habe ich mir die meine "TemplateScriptingCompiler.class" auf dem Server

    angeschaut und die entspricht 1:1 dem Fix.

    Wie schon gesagt, auf dem alten Server lief die Seite mit "7.2.0"


    Sascha

  • Servus!

    *Thread

    Ich hoffe doch sehr, dass du keine Menschen aufschlitzt.

    Alles gut! Noch leben alle!

    "Fred" ist in dem Bereich wo ich mich sonst herumtreibe ein alias für Thread!

    Schöner und schneller zu schreiben.

    Also Templates habe ich keine geändert und diese sind somit noch Jungfräulich.

    Werde mich nochmals an die Datenbank machen und diese auf Kurs bringen.

    Also Back to the Roots! 8o


    Sascha

  • Servus!

    Tim Düsterhus Es wird jetzt sehr interessant!

    Habe wie gesagt, die Datenbank wieder auf Standard gebracht und die Fehlermeldung

    ist weiterhin vorhanden. (Nur beim Aufruf der Artikel, die Artikel-Liste wird normal angezeigt)


    Wollte jetzt eine Testinstans des Forums erstellen und bin zurück auf PHP 7.2.0

    um diese direkt mit Version 7.2.0 zu installieren.


    Bin dann nochmals aufs Forum, klicke Artikel an und voilá die Artikel lassen sich ohne

    Fehlermeldung aufrufen! :thumbup:


    Also schnell ins ACP und das Forum aus dem "Wartungsmodus" befreit (deaktiviert)

    und nochmals einen Artikel aufgerufen.


    Peng! Der Fehler ist wieder da! =O


    Jetzt habe ich absolut keinen Plan mehr (mehr als vorher)!


    Was kann das sein?


    Nehme alles Zurück!

    Weil jetzt kommt der Fehler ständig!

    Im Cache hatte ich nichts, da dieser immer gelöscht inkl. Browser.


    THX


    Sascha

    3 Mal editiert, zuletzt von feschtag (17. Dezember 2017 um 07:30) aus folgendem Grund: Hatte was vergessen! :-)

    • Offizieller Beitrag

    Hallo,

    dieser Fehler wurde vor 10 Tagen mit folgendem Commit korrigiert (aber noch nicht veröffentlicht): https://github.com/WoltLab/WCF/co…e8239032212f08c. Für 3.1 war der Fehler schon Mitte Oktober durch einen freiwilligen Helfer korrigiert, die Änderung offensichtlich nicht auf den kleinstmöglichen Branch angewendet: https://github.com/WoltLab/WCF/co…986d225e368a1b9

  • Sefvus!

    Vielen Dank für die Info!

    Hab heute den Server komplett platt gemacht und mit der Info,

    kann ich jetzt die Backups einspielen zum testen und muss nicht alles neu installieren. :D

    Gebe dann Bescheid.


    Saschq

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!