Wie viel String-Inhalt kann ich in einer Option speichern?

Ich bin dabei, ein neues Plugin zu erstellen, das entfernte Inhalte abruft und lokal speichert, um sie auf der WP-Website zu verwenden. Ich habe ein kostenloses Plugin, das dies mit Twitter und Tweets macht, und ich speichere eine JSON-Datei im Plugin-Verzeichnis. Einige Benutzer beschweren sich, dass das Plugin aufgrund von Berechtigungen keine Dateien in den Ordner schreiben kann.

Aus diesem Grund habe ich darüber nachgedacht, den Remote-Inhalt für dieses neue Plugin in einer Option zu speichern. Ist 250 KB HTML zu groß für eine Option? Gibt es einen anderen API-Aufruf, der mir helfen kann, einen großen Teil der Zeichenfolgedaten zu speichern?

Solutions Collecting From Web of "Wie viel String-Inhalt kann ich in einer Option speichern?"

Sehen Sie sich das Tabellenschema in wp-admin/includes/schema.php :

 // regular blog tables CREATE TABLE $wpdb->options ( option_id bigint(20) unsigned NOT NULL auto_increment, option_name varchar(64) NOT NULL default '', option_value longtext NOT NULL, autoload varchar(20) NOT NULL default 'yes', PRIMARY KEY (option_id), UNIQUE KEY option_name (option_name) ) $charset_collate; // Multisite options CREATE TABLE $wpdb->sitemeta ( meta_id bigint(20) NOT NULL auto_increment, site_id bigint(20) NOT NULL default '0', meta_key varchar(255) default NULL, meta_value longtext, PRIMARY KEY (meta_id), KEY meta_key (meta_key), KEY site_id (site_id) ) $charset_collate; 

In beiden Fällen ist der Wert longtext . Das MySQL-Handbuch sagt über diesen Typ:

Eine TEXT-Spalte mit einer maximalen Länge von 4.294.967.295 oder 4GB (2 32 – 1) Zeichen. Die effektive maximale Länge ist geringer, wenn der Wert Multibyte-Zeichen enthält. Die effektive maximale Länge von LONGTEXT-Spalten hängt auch von der konfigurierten maximalen Paketgröße im Client / Server-Protokoll und vom verfügbaren Speicher ab. Jeder LONGTEXT-Wert wird mit einem 4-Byte-Längenpräfix gespeichert, das die Anzahl der Bytes im Wert angibt.

4GB. Wenn das nicht genug ist, verbessern Sie den Reinigungsprozess. Vielleicht solltest du den Inhalt trotzdem als Datei speichern – im uploads Verzeichnis .

Es ist ein Longtext-Feld …

 mysql> describe wp_options; +--------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+---------------------+------+-----+---------+----------------+ | option_id | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | option_name | varchar(64) | NO | UNI | | | | option_value | longtext | NO | | NULL | | | autoload | varchar(20) | NO | | yes | | +--------------+---------------------+------+-----+---------+----------------+ 4 rows in set (0.00 sec) 

… und das bedeutet, dass es etwa 4 Gigabyte aufnehmen kann. https://stackoverflow.com/a/4294527/751089

Meiner Meinung nach ist dies eine gute Option für eine Option, da die Informationen nicht direkt mit einem Post oder einem Benutzer in Verbindung stehen. Im Allgemeinen ist es keine gute Idee , Massen von Daten in einem Feld zu speichern, aber Tweets sind sehr ersetzbar.

Schließlich sollten Sie zum Speichern von Tweets und anderen sich ändernden Daten, die ein wenig langsam sind, die Transienten-API verwenden , die Ihnen bei der zeitweisen Aktualisierung helfen kann.