〖PHP中实现ASP中的Application 功能〗

/*

作者: 何志强[hzq@chinaasp.com hhzqq@21cn.com]

主页: http://www.phpchina.com/

ICQ : 50721529

版本: 1.0

未经本人同意,不得以任何方式转载

注意PHP需要有Semaphore and shared memory functions支持:

从源代码安装PHP时,在./configure后面加上--enable-sysvsem和--enable-sysvshm

*/

if(!defined("__Class_Application")){

define("__Class_Application",1,1);

define("Semaphore_Key",1000,1);

define("SharedMem_Key",2000,1);

define("SharedMem_Size",65535,1); //共享内存大小

class Application{

var $SemaphoreID;

var $SharedMemID;

var $VarIndexes;

function Application(){

$this->SemaphoreID = sem_get(Semaphore_Key,1,0600);

$this->SharedMemID = shm_attach(SharedMem_Key,SharedMem_Size,0600);

$this->lock();

$this->VarIndexes = @shm_get_var($this->SharedMemID,0);

if(empty($this->VarIndexes)){

$this->VarIndexes = array();

shm_put_var($this->SharedMemID,0,$this->VarIndexes);

}

$this->unlock();

}

//在对共享内存进行操作前请调用该函数,防止多个进程同时对该共享内存进行操作

function lock(){

sem_acquire($this->SemaphoreID);

}

//在对共享内存操作完后请调用该函数,允许其它进程对该共享内存进行操作

function unlock(){

sem_release($this->SemaphoreID);

}

//取出存在共享内存中的某变量,返回false表示共享内存中无该变量

function read($name){

if(!isset($this->VarIndexes[$name])) return false;

$GLOBALS[$name] = shm_get_var($this->SharedMemID,$this->VarIndexes[$name]);

return true;

}

//读出存在共享内存中的所有变量

function readall(){

reset($this->VarIndexes);

while(list($name,$id)=each($this->VarIndexes))

$GLOBALS[$name] = shm_get_var($this->SharedMemID,$id);

}

//将指定变量存入共享内存

function save($name){

if(!isset($this->VarIndexes[$name])){

$this->VarIndexes[$name] = count($this->VarIndexes)+1;

shm_put_var($this->SharedMemID,0,$this->VarIndexes);

}

shm_put_var($this->SharedMemID,$this->VarIndexes[$name],$GLOBALS[$name]);

}

//保存在共享内存中的所有变量

function saveall(){

reset($this->VarIndexes);

while(list($name,$id)=each($this->VarIndexes)){

if(isset($GLOBALS[$name]))

shm_put_var($this->SharedMemID,$id,$GLOBALS[$name]);

}

}

//清空共享内存中的所有变量

function clear(){

reset($this->VarIndexes);

while(list($name,$id)=each($this->VarIndexes))

shm_remove_var($this->SharedMemID,$id);

$this->VarIndexes = array();

shm_put_var($this->SharedMemID,0,$this->VarIndexes);

}

}

}

?>

/*测试

class ClassTest{

var $name;

function ClassTest($name){

$this->name = $name;

}

}

$App = new Application();

$App->lock();

if($cmd=='clear') $App->clear();

if($App->read('count')) $count++;

else $count = 1;

$App->save('count');

if($App->read('array')){

echo '存放数组测试:
';

for($i=0;$i';

echo '


';

}

else{

$array = array('PHP','JSP','ASP');

$App->save('array');

}

if($App->read('MyClass')){

echo '存放Class测试:
';

echo '    '.$MyClass->name.'
';

echo '


';

}

else{

$MyClass = new ClassTest('何志强');

$App->save('MyClass');

}

$App->unlock();

echo 'this page has been visited '.$count.'
';

echo 'you can restart from here
';

*/

?>

责任编辑:

php 实现application,PHP中实现ASP中的Application 功能相关推荐

  1. 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式

    当我们用ASP.NET MVC开发Web应用程序的时候,我们都是将需要呈现的数据通过"Controllers"传输到"View"当中,怎么去实现,下面我介绍一下 ...

  2. 学习ASP.NET-初探Application状态

    学习ASP.NET-初探Application状态 - 上一篇<浅谈TeeChart组件在ASP中的应用>下一篇<用IS6进行ASP软件的打包和自动安装(补充)>字体: 小|中 ...

  3. 简单快捷实现ASP在线发邮件功能

    简单快捷实现ASP在线发邮件功能 在编写网上应用程序时,经常碰到需要在线发送邮件的问题,邮件内容是由程序动态决定的,如果你采用的是ASP方式来编写网上应用程序,如何简单.快捷地实现这一功能呢? 笔者在 ...

  4. 在 Linux“.NET研究” 操作系统中运行 ASP.NET 4 (下)

    "在 Linux 操作系统中运行 ASP.NET 4 (中)"中已经配置好了 openSUSE 11.3 操作系统. 现在,我们进入"GNOME 终端",使用 ...

  5. 简单介绍ASP中Cache技术的应用

    ASP从发布至今已经7年了,使用ASP技术已经相当成熟,自从微软推出了ASP.NET之后就逐渐停止了对ASP版本的更新.但是由于有很多人仍然习惯使用ASP来开发网站,所以,再次我将以一个简单的例子来说 ...

  6. 在 Asp.NET MVC 中使用 SignalR 实现推送功能

    一,简介 Signal 是微软支持的一个运行在 Dot NET 平台上的 html websocket 框架.它出现的主要目的是实现服务器主动推送(Push)消息到客户端页面,这样客户端就不必重新发送 ...

  7. .NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容

    .NET Core 3.0 Preview 3已经推出,它包含了一系列关于ASP.NET Core的新的更新. 下面是该预览版的更新列表: Razor组件改进: 单项目模板 新的Razer扩展 End ...

  8. 在Visual Studio 2017中使用Asp.Net Core构建Angular4应用程序

    前言 Visual Studio 2017已经发布了很久了.做为集成了Asp.Net Core 1.1的地表最强IDE工具,越来越受.NET系的开发人员追捧. 随着Google Angular4的发布 ...

  9. 在docker中运行ASP.NET Core Web API应用程序

    本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...

最新文章

  1. Java条形码生成技术-Barcode4j
  2. flutter 日历_Flutter:一个更贴近真实项目的练习
  3. CapcityScheduler配置方法(还没弄完)
  4. MySQL 高级 ———— MySQL逻辑架构图简介
  5. 【LeetCode】【HOT】142. 环形链表 II(快慢指针)
  6. php和java的语法区别吗_php语法同java语法的基本区别(实例项目需求,php才能熟)...
  7. 《编码的奥秘》记录(二)
  8. adobe reader打开pdf闪退或自动关闭
  9. 王校长一分钟能吃多少热狗?| 小游戏 1
  10. matlab程控开关,基于单片机和FPGA设计的程控滤波器(MAX297+LTC1068)
  11. AVR 上的汇编圈圈操作系统
  12. 计算机系统集成项目工程师报名,2021年系统集成项目管理工程师报名流程
  13. 如何设置word的有效期
  14. 虚拟机安装win10 x64系统
  15. 概率论在实际生活的例子_日常生活中的概率统计
  16. 代码解读六 文件名“Ano_AltCtrl.c”
  17. Designing Data-Intensive Applications
  18. AWD比赛入门攻略总结
  19. NAPI(New API)的一些浅见
  20. tensorflow的slim调用预训练模型的权重进行迁移学习的一些感触

热门文章

  1. 全国首个园区型绿色能源网一年“减碳”上万吨
  2. 计算字符串的相似度(编辑距离)
  3. Mysql整库导出导入
  4. socket协议和http协议性能对比
  5. [转载] AUML——Supplement Documents
  6. Android-入门学习笔记-图片和外观改善
  7. 学习进度条__软件工程概论第一周学习计划
  8. java怎样读取数据库表中字段的数据类型?
  9. Codeforces Round #346 (Div. 2)
  10. 第一个hadoop 程序