検索

memcache服务用的是阿里云的OSC。
memcache之前都是好好的,现在遇到了不同key对应相同值的问题。

key设定是根据用户id来的,值也是用户id。

<code>$define('USERID',$userId);
$this->test(USERID);

//设置缓存内容。
function test($userId)
{
    $this->set('user_id_'.$userId,$userId);//设置键名和值
}</code>

在阿里云查看信息,发现user_id_1和user_id_2对应的值都是2。
确定值是被覆盖了。

初步怀疑是opcache的问题。想了解下opcache缓存什么内容,是否会缓存define()定义的常量?

如果不是opcache的问题,欢迎指出问题所在。谢谢。着急。

回复内容:

memcache服务用的是阿里云的OSC。
memcache之前都是好好的,现在遇到了不同key对应相同值的问题。

key设定是根据用户id来的,值也是用户id。

<code>$define('USERID',$userId);
$this->test(USERID);

//设置缓存内容。
function test($userId)
{
    $this->set('user_id_'.$userId,$userId);//设置键名和值
}</code>

在阿里云查看信息,发现user_id_1和user_id_2对应的值都是2。
确定值是被覆盖了。

初步怀疑是opcache的问题。想了解下opcache缓存什么内容,是否会缓存define()定义的常量?

如果不是opcache的问题,欢迎指出问题所在。谢谢。着急。

执行过程

input(PHP代码)-》词法分析-》语法分析-》opcode-》Zend engine-》output

在网上找了一张图,比较形象一点

opcache缓存疑问

关于opcache

opcache通过将PHP脚本预编译的字节码存储到共享内存中来提升PHP的性能,对于相同的PHP文件,第一次运行时可以缓存其opcode码,下次再执行这个页面时,直接会去找到缓存下的opcode码,省了中间的过程,所以起到了提高性能的作用

主要区别

1、虽然他们都放在内存中,但是opcache是mmap, 而memcache使用的是纯内存
2、opcache用作opcode cache, memcache是用作content cache

所以不会是opcache的问题,应该是你使用memcache的时候代码有误

BTW,如果是高并发的话,你可以试一试cas机制

我们写的PHP代码经过解释器解析后生成opcode,然后交给Zend Engine执行.
opcache在内存缓存页面生成的opcode,省去了每次的重复解析,从而提升PHP服务性能.
opcache理论上不会影响PHP代码逻辑,也就是不会缓存你定义的常量USERID.
但要注意,比如cache.php里保存了一个数组,只要cache.php被访问过,就会被opcache缓存,在缓存没有过期前,对cache.php的任何修改都不会生效.

你可以自己测试下,开启opcache,输入不一样,输出的USERID也是不一样的.

<code>info.php?id=1024
info.php?id=2048
<?php define('USERID',$_GET['id']);
echo USERID;</code></code>

可以把opcache缓存的东西当成是java编译之后的.class字节码文件,所以如果要更新程序的话就重新"编译"一下php

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションがすでに開始されているかどうかを確認するにはどうすればよいですか?PHPセッションがすでに開始されているかどうかを確認するにはどうすればよいですか?Apr 30, 2025 am 12:20 AM

PHPでは、session_status()またはsession_id()を使用して、セッションが開始されたかどうかを確認できます。 1)session_status()関数を使用します。 php_session_activeが返された場合、セッションが開始されました。 2)SESSION_ID()関数を使用します。空の文字列が返された場合、セッションが開始されます。どちらの方法でもセッション状態を効果的に確認でき、使用する方法を選択することは、PHPバージョンと個人的な好みに依存します。

Webアプリケーションでセッションを使用することが不可欠なシナリオを説明してください。Webアプリケーションでセッションを使用することが不可欠なシナリオを説明してください。Apr 30, 2025 am 12:16 AM

Sessionsionsionsarevitalinwebapplications、特にコマースプラットフォームの前。

PHPでの同時セッションアクセスをどのように管理できますか?PHPでの同時セッションアクセスをどのように管理できますか?Apr 30, 2025 am 12:11 AM

PHPでの同時セッションアクセスの管理は、次の方法で実行できます。1。データベースを使用してセッションデータを保存します。これらの方法は、データの一貫性を確保し、並行性のパフォーマンスを向上させるのに役立ちます。

PHPセッションを使用することの制限は何ですか?PHPセッションを使用することの制限は何ですか?Apr 30, 2025 am 12:04 AM

phpsessionshaveverallimitations:1)storagecconstraintscanleadtoperformanceissues; 2)securityvulnerablesliasitylikessessionfixationAttacksicexist;

負荷分散がセッション管理にどのように影響し、それに対処するかを説明します。負荷分散がセッション管理にどのように影響し、それに対処するかを説明します。Apr 29, 2025 am 12:42 AM

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 1。セッションレプリケーションサーバー間のセッションデータをコピーします。 2。セッションスティンネスは、ユーザーリクエストを同じサーバーに指示します。 3.集中セッションストレージは、Redisなどの独立したサーバーを使用してセッションデータを保存してデータ共有を確保します。

セッションロックの概念を説明します。セッションロックの概念を説明します。Apr 29, 2025 am 12:39 AM

SESSIONLOCKINGISATECHNIQUESTOESUREAUSER'SSESSIONREMAINSEXCLUSIVETOONEUSATIME.ITISCRUCIALFORPREVENTINGDATACORTIONANDSECURITYBREACHESINMULTI-USERAPPLICATIONS.SESSIONLOCKINGISISIMPLEMENTEDUSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGROCKINGSMECHANISMなど

PHPセッションの選択肢はありますか?PHPセッションの選択肢はありますか?Apr 29, 2025 am 12:36 AM

PHPセッションの代替品には、Cookie、トークンベースの認証、データベースベースのセッション、Redis/Memcachedが含まれます。 1.Cookiesは、クライアントにデータを保存することによりセッションを管理します。 2.トークンベースの認証はトークンを使用してユーザーを検証します。これは非常に安全ですが、追加のロジックが必要です。 3.Databaseベースのセッションは、データベースにデータを保存します。これは、スケーラビリティが良好ですが、パフォーマンスに影響を与える可能性があります。 4. Redis/Memcachedは分散キャッシュを使用してパフォーマンスとスケーラビリティを向上させますが、追加のマッチングが必要です

PHPのコンテキストで「セッションハイジャック」という用語を定義します。PHPのコンテキストで「セッションハイジャック」という用語を定義します。Apr 29, 2025 am 12:33 AM

SessionHijackingとは、ユーザーのSessionIDを取得してユーザーになりすましている攻撃者を指します。予防方法には、次のものが含まれます。1)HTTPSを使用した通信の暗号化。 2)SessionIDのソースの検証。 3)安全なSessionID生成アルゴリズムの使用。 4)SessionIDを定期的に更新します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。