Veröffentlicht am Schreib einen Kommentar

PHP Byte code cache aktivieren

In der php.ini folgende Konfiguration vornehmen um den php7 / php8 OPCache zu aktivieren welches die Performance deutlich erhöht.

In dieser Beispiel Konfiguration habe ich ebenfalls unter php 8 just in time Kompilierung aktiviert für PHP 7.4 falls ihr das noch verwendet bitte die just in time compilation deaktivieren weil sie erst unter php8 hinzugekommen ist.

#memory_limit=512M;

#zend_extension=opcache.so;

opcache.enable=1;

opcache.revalidate_freq=180;

opcache.fast_shutdown=0;

opcache.enable_cli=1;

opcache.revalidate_path=0;

opcache.validate_timestamps=2;

opcache.max_file_size=0;

opcache.file_cache=/var/www/vhosts/tsecurity.de/opcache_tsec;

opcache.file_cache_only=1;

opcache.memory_consumption=256;

opcache.interned_strings_buffer=8;

opcache.max_accelerated_files=50000;

#opcache.revalidate_freq=2;

opcache.fast_shutdown=1;

opcache.enable_cli=1;

#opcache.jit_buffer_size=256M; #seit PHP 8

#opcache.jit=tracing;

#opcache.blacklist_filename=/var/www/xxx.com/

Entscheidend für den Erfolg des PHP bei caches ist dass der Ordner von euch erstellt werden muss er wird nicht vom PHP selbst erstellt Punkt es macht definitiv Sinn einen neuen Ordner anzulegen und auf diesen in der entsprechenden uniconfiguration zu zeigen.

opcache.file_cache=/path/

Veröffentlicht am Schreib einen Kommentar

PHP just in time compilation

PHP 7.4 erschien am 28. November 2019 und gilt inzwischen als outdated.

Ab Ende November 2022 wird es für die PHP-Version 7.4 keine Sicherheitsupdates mehr geben.

PHP 7 hat eine um bis zu 30 Prozent geringere Ausführungszeit als PHP 5

PHP 8 wurde am 26. November 2020 veröffentlicht. 

Die Version unterstützt unter anderem Just-in-time-Kompilierung, was in Micro-Benchmarks für eine Steigerung der Performance um mehr als 45 Prozent sorgt.

Im Dezember 2022 wird es den php8.2 Release geben.

Konfiguration für just in time Kompilierung für php8 aktivieren:

opcache.jit_buffer_size=256M;

opcache.jit=tracing;

Oder 

opcache.jit=function;

Viel Spaß mit der verbesserten Performance!

Veröffentlicht am Schreib einen Kommentar

PHP OPcache Dateien und Verzeichnisse vom OPcache ausschließen

kurz gesagt: Was ist PHP OPCache? OPCache ist eine Erweiterung für PHP, die die Ausführung von PHP-Skripten beschleunigt, indem sie deren Bytecode zwischenspeichert. Wird ein PHP-Skript aufgerufen, wird es zunächst in plattformunabhängigen Bytecode übersetzt und anschließend wird dieser Bytecode von der Zend Engine in Maschinencode übersetzt. Die Übersetzung vom Skript in den Bytecode erfolgt normalerweise bei jedem Aufruf des Skripts. An dieser Stelle kommt OPCache ins Spiel. OPCache speichert den vorkompilierten Bytecode im Hauptspeicher (RAM). Beim erneuten Aufruf eines Skripts wird dieses nicht erneut in Bytecode übersetzt, sondern der bereits übersetzte Bycode wird von OPCache aus dem Arbeitsspeicher geladen.

; Der Speicherort der OPcache-Blacklist-Datei (Platzhalter erlaubt).

; Jede OPcache-Blacklist-Datei ist eine Textdatei, die die Namen von Dateien enthält

; das sollte nicht beschleunigt werden.

opcache.blacklist_filename=/var/www/vhosts/tsecurity.de/opcache-blacklist.txt

; Die Blacklist-Datei ist eine Textdatei, die die Namen von Dateien enthält

; das sollte nicht beschleunigt werden. Das Dateiformat besteht darin, jeden Dateinamen hinzuzufügen.

 /path/to/ignored/script/ignoreThis.php 
/var/www/developer/*
/var/www/vhosts/mydomain.com/httpdocs/cache/*
Veröffentlicht am Schreib einen Kommentar

PHP 8.2 ohne URL Encoding utf8_encode

ISO-8859-1 zu UTF-8 mit mbstring

Bis PHP 8.2 war folgende Funktion möglich:

utf8_encode($string);

Ab PHP 8.2 bietet mbstring eine Lösung an:

mb_convert_encoding($string, “UTF-8”, “ISO-8859-1”);

Alternative Funktion ohne utf8_encode:

function iso8859_1_to_utf8(string $string): string {

    $s .= $string;

    $len = \strlen($s);

    for ($i = $len >> 1, $j = 0; $i < $len; ++$i, ++$j) {

        switch (true) {

            case $s[$i] < “\x80”: $s[$j] = $s[$i]; break;

            case $s[$i] < “\xC0”: $s[$j] = “\xC2”; $s[++$j] = $s[$i]; break;

            default: $s[$j] = “\xC3”; $s[++$j] = \chr(\ord($s[$i]) – 64); break;

        }

    }

    return substr($s, 0, $j);

}

https://php.watch/versions/8.2/utf8_encode-utf8_decode-deprecated

Veröffentlicht am Schreib einen Kommentar

Eine einfache Elektron-App erstellen

$ git clone https://github.com/electron/electron-api-demos
$ cd electron-api-demos
$ npm install
$ npm start
// Modules to control application life and create native browser window
const {app, BrowserWindow} = require('electron')
const path = require('path')

function createWindow () {
  // Create the browser window.
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  // and load the index.html of the app.
  mainWindow.loadURL('https://tsecurity.de')

  // Open the DevTools.
  // mainWindow.webContents.openDevTools()
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
  createWindow()
  
  app.on('activate', function () {
    // On macOS it's common to re-create a window in the app when the
    // dock icon is clicked and there are no other windows open.
    if (BrowserWindow.getAllWindows().length === 0) createWindow()
  })
})

// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') app.quit()
})

// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.

Importiere Electron Forge in deinen App-Ordner

npm install –save-dev @electron-forge/cli

npx electron-forge import

npm run make

Beispiel Elektron App von Bludau.io zum Download

Weitere Informationen unter https://www.electronjs.org/