报表的缓存基本存储和读写,报表缓存读写_PHP教程
报表的缓存基本存储和读写,报表缓存读写
<?<span>php </span><span>/*</span><span>* * Class Rpt redis 用于报表的缓存基本存储和读写 2.0 * @simple * Rpt::read("diamond.account",$nick); * Rpt::readSync("diamond.account",$nick); * $finder = Rpt::createFinder("diamond.account",$nick); * $finder->read(); * $finder->readSync(); * * Rpt::save("diamond.account",$nick,$data); * $storage = Rpt::createStorage("diamond.account",$nick); * $storage->save($data); * $storage->save($data,7200); </span><span>*/</span> <span>class</span><span> Rpt { </span><span>public</span> <span>static</span> <span>function</span> read(<span>$key</span>,<span>$nick</span><span>){ </span><span>$finder</span> = self::createFinder(<span>$key</span>,<span>$nick</span><span>); </span><span>return</span> <span>$finder</span>-><span>read(); } </span><span>public</span> <span>static</span> <span>function</span> readSync(<span>$key</span>,<span>$nick</span><span>){ </span><span>$finder</span> = self::createFinder(<span>$key</span>,<span>$nick</span><span>); </span><span>return</span> <span>$finder</span>-><span>readSync(); } </span><span>public</span> <span>static</span> <span>function</span> createFinder(<span>$key</span>,<span>$nick</span><span>){ </span><span>$key</span> = RptGenerate::<span>key</span>(<span>$key</span>,<span>$nick</span><span>); </span><span>return</span> <span>new</span> RptFinder(<span>$key</span><span>); } </span><span>public</span> <span>static</span> <span>function</span> createStorage(<span>$key</span>,<span>$nick</span><span>){ </span><span>$key</span> = RptGenerate::<span>key</span>(<span>$key</span>,<span>$nick</span><span>); </span><span>return</span> <span>new</span> RptStorage(<span>$key</span><span>); } </span><span>public</span> <span>static</span> <span>function</span> save(<span>$key</span>,<span>$nick</span>,<span>$data</span>,<span>$expired</span>=7200<span>){ </span><span>$storage</span> = self::createStorage(<span>$key</span>,<span>$nick</span><span>); </span><span>return</span> <span>$storage</span>->save(<span>$data</span>,<span>$expired</span><span>); } </span><span>public</span> <span>static</span> <span>function</span><span> createRedis(){ </span><span>$redis</span> = <span>new</span><span> Redis(); </span><span>$redis</span>->connect(Yii::app()->params["RedisServerIP"<span>]); </span><span>return</span> <span>$redis</span><span>; } } </span><span>/*</span><span>* * Class RptFinder 数据读取 </span><span>*/</span> <span>class</span><span> RptFinder { </span><span>/*</span><span>* * @var string $key </span><span>*/</span> <span>public</span> <span>$key</span><span>; </span><span>/*</span><span>* * @param string $key </span><span>*/</span> <span>public</span> <span>function</span> __construct(<span>$key</span><span>){ </span><span>$this</span>-><span>key</span> = <span>$key</span><span>; } </span><span>/*</span><span>* * 非安全读取数据 * @return mixed </span><span>*/</span> <span>public</span> <span>function</span><span> read(){ </span><span>$data</span> = <span>$this</span>-><span>readData(); </span><span>if</span>(<span>$data</span>->isRead && !<span>$data</span>-><span>isExpired()) </span><span>return</span> <span>$data</span>-><span>data; </span><span>return</span> <span>null</span><span>; } </span><span>protected</span> <span>function</span><span> readData(){ </span><span>$redis</span> = Rpt::<span>createRedis(); </span><span>$rptData</span> = <span>new</span><span> RptData(); </span><span>$data</span> = json_decode(<span>$redis</span>->get(<span>$this</span>-><span>key</span><span>)); </span><span>if</span>(<span>false</span> == <span>$data</span><span>){ </span><span>$rptData</span>->isRead = <span>false</span><span>; </span><span>$rptData</span>->expiredTime = <span>time</span><span>(); </span><span>$rptData</span>->expired = 24*3600<span>; }</span><span>else</span><span>{ </span><span>$rptData</span>->expired = <span>$data</span>-><span>expired; </span><span>$rptData</span>->isRead = <span>$data</span>-><span>isRead; </span><span>$rptData</span>->expiredTime = <span>$data</span>-><span>expiredTime; </span><span>$rptData</span>->data = <span>$data</span>-><span>data; } </span><span>return</span> <span>$rptData</span><span>; } </span><span>/*</span><span>* * 同步读取数据 * @return mixed </span><span>*/</span> <span>public</span> <span>function</span><span> readSync(){ </span><span>while</span>(<span>true</span><span>){ </span><span>$rptData</span> = <span>$this</span>-><span>readData(); </span><span>if</span>(<span>$rptData</span>->isRead && !<span>$rptData</span>-><span>isExpired()) </span><span>return</span> <span>$this</span>-><span>read(); </span><span>sleep</span>(1<span>); } } } </span><span>/*</span><span>* * Class RptStorage 数据存储 </span><span>*/</span> <span>class</span><span> RptStorage { </span><span>/*</span><span>* * @var string key </span><span>*/</span> <span>public</span> <span>$key</span><span>; </span><span>/*</span><span>* * @param string $key </span><span>*/</span> <span>public</span> <span>function</span> __construct(<span>$key</span><span>){ </span><span>$this</span>-><span>key</span> = <span>$key</span><span>; } </span><span>/*</span><span>* * 写入数据 * @param $data * @param int $expired * @return bool </span><span>*/</span> <span>public</span> <span>function</span> save(<span>$data</span>,<span>$expired</span>=7200<span>){ </span><span>$rptData</span> = <span>new</span><span> RptData(); </span><span>$rptData</span>->data = <span>$data</span><span>; </span><span>$rptData</span>->expiredTime = <span>time</span><span>(); </span><span>$rptData</span>->isRead = <span>true</span><span>; </span><span>$rptData</span>->expired = <span>$expired</span><span>; </span><span>$redis</span> = Rpt::<span>createRedis(); </span><span>return</span> <span>$redis</span>->setex(<span>$this</span>-><span>key</span>, <span>$rptData</span>->expired,json_encode(<span>$rptData</span><span>)); } } </span><span>/*</span><span>* * Class RptData redis存储数据实体 </span><span>*/</span> <span>class</span><span> RptData { </span><span>public</span> <span>$expired</span><span>; </span><span>public</span> <span>$expiredTime</span><span>; </span><span>public</span> <span>$data</span><span>; </span><span>public</span> <span>$isRead</span><span>; </span><span>public</span> <span>function</span><span> isExpired(){ </span><span>if</span>(<span>time</span>()-<span>$this</span>->expiredTime > <span>$this</span>-><span>expired) </span><span>return</span> <span>true</span><span>; </span><span>return</span> <span>false</span><span>; } } </span><span>/*</span><span>* * Class RptGenerate key生成 </span><span>*/</span> <span>class</span><span> RptGenerate { </span><span>public</span> <span>static</span> <span>function</span> <span>key</span>(<span>$key</span>,<span>$nick</span><span>){ </span><span>return</span> <span>$key</span>.".".<span>md5</span>(<span>$nick</span><span>); } }</span>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Seriennummer der Festplatte kann über die Verpackung der Festplatte oder das Festplattengehäuse oder im Win11-System überprüft werden. Einige Benutzer kennen die Methode jedoch nicht Ihnen von dieser Seite zur Verfügung gestellt. Wie viele Ziffern hat die Seriennummer einer Festplatte? Die Seriennummer einer Computerfestplatte ist eine eindeutige Kennung, die eine bestimmte Festplatte identifiziert. Es wird vom Festplattenhersteller bereitgestellt und kann vom Benutzer nicht geändert werden. Die Seriennummer der Festplatte besteht in der Regel aus 10 bis 20 Ziffern und Buchstaben und besteht im Allgemeinen natürlich aus 12 Ziffern. Sie kann zur Aufzeichnung von Festplattenparametern wie Festplattenkapazität, Lademodus sowie Lese- und Schreibgeschwindigkeit verwendet werden. In Computersystemen werden Seriennummern von Festplatten normalerweise zur Identifizierung und Unterscheidung verschiedener Festplatten verwendet. In einigen Fällen werden sie auch zum Passwortschutz, zur Softwareautorisierung usw. verwendet. passieren

Das SCSI-Festplattengerät ist kein Solid-State-Laufwerk. SCSI-Festplattengerät ist eine Festplatte, die die SCSI-Schnittstelle verwendet und eine mechanische Festplatte ist. Die Schnittstellengeschwindigkeit der SCSI-Festplatte ist hoch. Da sie hauptsächlich in Servern verwendet wird, ist auch die Leistung der Festplatte selbst relativ hoch, die Festplattengeschwindigkeit ist hoch, die Cache-Kapazität ist groß und die CPU-Auslastung ist gering. Die Skalierbarkeit ist viel besser als bei IDE-Festplatten und es unterstützt Hot-Swapping.

Wenn Sie versuchen, ein Disk-Image in VirtualBox zu öffnen, wird möglicherweise eine Fehlermeldung angezeigt, die darauf hinweist, dass die Festplatte nicht registriert werden kann. Dies geschieht normalerweise, wenn die VM-Disk-Image-Datei, die Sie öffnen möchten, dieselbe UUID wie eine andere virtuelle Disk-Image-Datei hat. In diesem Fall zeigt VirtualBox den Fehlercode VBOX_E_OBJECT_NOT_FOUND(0x80bb0001) an. Wenn dieser Fehler auftritt, machen Sie sich keine Sorgen, es gibt einige Lösungen, die Sie ausprobieren können. Zunächst können Sie versuchen, mit den Befehlszeilentools von VirtualBox die UUID der Disk-Image-Datei zu ändern, um Konflikte zu vermeiden. Sie können den Befehl „VBoxManageinternal“ ausführen

So erzwingen Sie die Formatierung einer Festplatte unter Linux. Wenn Sie ein Linux-System verwenden, müssen wir manchmal die Festplatte formatieren, um die Daten auf der Festplatte neu zu partitionieren oder zu löschen. In diesem Artikel wird erläutert, wie Sie die Formatierung einer Festplatte in einem Linux-System erzwingen, und es werden spezifische Codebeispiele bereitgestellt. 1. Überprüfen Sie das Festplattengerät. Zuerst müssen wir die Informationen zum Festplattengerät überprüfen, um festzustellen, welches Festplattengerät formatiert werden soll. Sie können es mit dem folgenden Befehl anzeigen: #fdisk-l Dieser Befehl listet alle Festplattengeräte im System auf

Die Lese- und Schreibgeschwindigkeit einer Festplatte mit 5400 U/min beträgt im Allgemeinen 100 MB bis 150 MB pro Sekunde. Es gibt jedoch viele Faktoren, die die Festplattengeschwindigkeit beeinflussen Die Übertragung einer einzelnen Datei ist schneller als die Übertragung mehrerer Dateien, die SATA3-Schnittstelle ist besser als die SATA2-Schnittstelle und so weiter.

Wenn wir einen Computer kaufen, entscheiden wir uns möglicherweise nicht unbedingt für eine große Festplatte. Wenn wir zu diesem Zeitpunkt eine neue Festplatte zu win11 hinzufügen möchten, können wir zuerst die neue Festplatte installieren, die wir gekauft haben, und dann Partitionen zum Computer hinzufügen. Anleitung zum Hinzufügen einer neuen Festplatte in Win11: 1. Zuerst zerlegen wir den Host und finden den Steckplatz der Festplatte. 2. Nachdem wir es gefunden haben, schließen wir zunächst das „Datenkabel“ an, das normalerweise eine narrensichere Konstruktion hat. Wenn es nicht eingeführt werden kann, kehren Sie einfach die Richtung um. 3. Anschließend stecken Sie die neue Festplatte in den Festplattenschacht. 4. Verbinden Sie nach dem Einstecken das andere Ende des Datenkabels mit der Hauptplatine des Computers. 5. Nachdem die Installation abgeschlossen ist, können Sie es wieder in den Host einsetzen und einschalten. 6. Nach dem Booten klicken wir mit der rechten Maustaste auf „Dieser Computer“ und öffnen „Computerverwaltung“. 7. Klicken Sie nach dem Öffnen in der unteren linken Ecke auf „Datenträgerverwaltung“. 8. Dann können Sie rechts klicken

So brechen Sie die Formatierung der Linux-Festplatte ab und Codebeispiele Einführung: Bei Verwendung des Linux-Betriebssystems müssen wir manchmal den Formatierungsvorgang der Festplatte abbrechen. In diesem Artikel erfahren Sie, wie Sie eine Linux-Festplatte deformatieren und erhalten konkrete Codebeispiele. 1. Was ist Festplattenformatierung? Unter Festplattenformatierung versteht man den Vorgang des Organisierens und Verwaltens der Daten auf der Festplatte in einem bestimmten Format. In Linux-Systemen verwenden wir normalerweise Dateisysteme zum Formatieren von Festplatten. Zu den gängigen Dateisystemen gehören ext4, NTFS usw. zwei,

Wenn bei jedem Starten Ihres Computers ein Gerätefehler am AHCI-Port 0 auftritt, müssen Sie die in diesem Artikel beschriebenen Methoden befolgen, um das Problem zu lösen. Was ist ein AHCI-Port-0-Gerätefehler? AHCI-Gerätefehler werden vom BIOS gemeldet. SMART hat angegeben, dass die Festplatte an Port 0 fehlerhaft ist und möglicherweise nicht zugänglich ist. Es kann jederzeit zu Problemen mit der Festplatte kommen. Wenn es sich um einen Desktop-Computer handelt, wird empfohlen, den Festplattenanschluss zu ändern. Wenn das Problem weiterhin besteht, liegt möglicherweise ein Problem mit der Festplatte selbst vor. Sie können ein Tool zur Festplattenprüfung ausführen, die ausgefallene Festplatte deaktivieren und die Ports überprüfen, um dieses Problem zu beheben. Beheben von AHCI-Port-0-Gerätefehlern auf Windows-Computern Normalerweise sind AHCI-Port0-Gerätefehler nicht auf ein Problem mit dem Betriebssystem zurückzuführen, sondern auf einen Festplattenfehler an Port 0.
