小编Sol*_*per的帖子

对象序列化/反序列化如何工作?

我正在阅读关于PHP的序列化/反序列化概念.我想知道它们是如何存储在filesystem/db中的.我猜它是二进制格式.但是,我想知道整个班级是如何存储的?我知道数据成员中的数据可以存储,但方法是如何存储的?

我的意思是,PHP如何知道在函数中编写的代码是什么someFunc()

$obj = new ClassName();
$obj->someFunc();
$serial = serialize($obj);
$unserialobj = unserialize($serial);
$unserialobj->someFunc();
Run Code Online (Sandbox Code Playgroud)

PHP可以知道第2行要做什么,但它知道如何在#5行中做一个非序列化对象?它也保存代码吗?

php object-serialization

7
推荐指数
2
解决办法
2万
查看次数

无法在 Azure Functions 中创建文件

我有一个在应用服务计划上运行的 Azure 功能。此函数应用程序从 sftp 下载文件并执行一些处理/验证,然后上传到 blob 存储。

这是工作代码,我必须进行一些更改,以便我必须保存物理文件 FileStream 而不是 MemoryStream。这在我的本地环境中也有效,但一旦部署到 Azure,我在下载 sftp 文件的步骤中收到 FileNotFound 错误。

错误文本(编辑的文件/类名称)

System.IO.FileNotFoundException: Could not find file 'D:\home\site\wwwroot\myfile.csv'.
File name: 'D:\home\site\wwwroot\myfile.csv'
   at System.IO.FileStream.ValidateFileHandle(SafeFileHandle fileHandle)
   at System.IO.FileStream.CreateFileOpenHandle(FileMode mode, FileShare share, FileOptions options)
   at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
   at MyProcessDataLoadProcess.DownLoadMyProcessFilesFromSftp.DownloadFileFromSftp(SftpClient sftp, SftpFile sftpFile, String localRootPath) in D:\a\1\s\MyProcessDataLoadProcess\DownLoadMyProcessFilesFromSftp.cs:line 173
   at MyProcessDataLoadProcess.DownLoadMyProcessFilesFromSftp.Run(TimerInfo timerInfo, ILogger log, ExecutionContext context) in D:\a\1\s\MyProcessDataLoadProcess\DownLoadMyProcessFilesFromSftp.cs:line 106
Run Code Online (Sandbox Code Playgroud)

我确信这与权限有关,因为当我尝试使用简单的 dir 创建测试文件时> 来自平台功能命令行工具的 test.txt,我收到“系统找不到指定文件的错误”。 在此输入图像描述

我确信这与允许写入本地磁盘的设置有关,因为我使用不同的订阅进行了 POC,其中我拥有完全权限。我不确定这是否可以在应用程序设置中的某个位置进行配置,或者是否需要授予存储级别或订阅级别权限的权限。

更新:

目前,我找到了通过使用 …

azure azure-app-service-plans azure-functions

6
推荐指数
1
解决办法
9834
查看次数

如何使用PHP实现服务器端缓存

对于我的基于浏览器的Flex游戏(适用于Facebook平台),我使用PHP和MySQL进行服务器端编程和保存数据(使用amfPHP)

由于我对游戏开发和PHP都很陌生并且我想看到我的游戏正在运行,我已经编写了所有服务器端编码(amfPHP服务),其中包含非常难看和脏的代码,这些代码命中数据库进行获取,更新游戏状态(包括球员统计和库存).

绝对不高效,所以我开始找到PHP中用于实现缓存的最佳方法.通过缓存,我的意思是我不想一直打到数据库以保存播放器的最新游戏状态,而只是在会话结束时保存(当玩家离开应用程序时).

通常,我的游戏/应用程序流程是这样的

  • 玩家从FB启动应用程序/游戏
  • 认证
  • 加载用户会话(以前保存的游戏状态).这包括获取用户统计数据,例如他有多少能量,硬币,经验等,他的库存,当前活动任务等,还有市场项目,报价,投放等静态信息. .
  • 在游戏发生变化时更新游戏状态,最常见的情况是当用户点击某个建筑物进行收集,消耗能量,添加硬币,提供经验或奖励等等.

现在,很少有一些共同数据可供所有参与者使用,例如"市场项目及其价格和图形资产等",并且有玩家特定数据.

我脑子里有一些想法,我需要专家帮助我的想法是好是坏还是有更好的方法?

将静态(公共)数据永久保存在缓存中并具有管理面板以清除/更新验证后,检索数据并保存在缓存中(作为JSON对象)和所有读/写,直到会话结束将对缓存完成,会话结束后,将缓存数据保存到DB中.

在这里,我想使用APC.你觉得它可靠吗?

我想,在最坏的情况下,当网络服务器崩溃时,所有缓存数据都将丢失,所以我想将它们保存在会话中,但我认为PHP将它们保存在文件中,这意味着会有很多I/O,这是再次不推荐?或者这是可以接受的吗?

我也在想在序列化对象中保存游戏状态有多好?

php optimization

5
推荐指数
1
解决办法
2510
查看次数

wamp - www目录不会打开新文档根目录

我已将默认c:/ wamp/www/path更改为新目录c:/ projectfolder/www /在http.conf中

这个变化反映了,但是当我点击wamp系统托盘中的www目录(在Windows 7中)时,它仍然打开旧位置c:/ wamp/www /

我重新启动了服务并退出了wamp并重新启动并重新启动了系统,但它仍然打开旧位置.

这个路径是从某个地方的wamp设置而不是httpd.conf获取的吗?

注意:对我来说这不是问题,除了我必须在资源管理器中创建一个快捷方式,但我正在运行另一个与flex的问题,我不确定无论如何与此相关.

apache wamp

3
推荐指数
1
解决办法
2593
查看次数

在ssis中为单行结果集分配值,从而在SSIS 2012中给出错误

我试图从SQL Server的表中获取CSV ID并将结果分配给变量.下面是我在执行SQL任务中放入的sql

set nocount on
declare @csv varchar(max) = ''
select @csv = @csv + cast(companyid as varchar(10)) + ',' from company where isprocessed = 0
select substring(@csv,1,len(@csv) - 1) as companyids
Run Code Online (Sandbox Code Playgroud)

正如您可以看到它在t-sql中获取字段的csv的简单而标准的方法.它在查询窗口中完美运行,但在我在SSIS 2012中运行任务时抛出以下错误

[执行SQL任务]错误:值类型(__ComObject)只能转换为Object类型的变量.

[执行SQL任务]错误:为变量"sCSVCompanyIds"赋值时发生错误:"分配给变量"User :: sCSVCompanyIds"的值(DBNull)的类型与当前变量类型(String)不同.在执行期间可能不会改变类型.变量类型是严格的,除了Object类型的变量."

以下是执行SQL任务的设置

  1. 在" 常规"选项卡中,"结果集"项目设置为单行
  2. 在" 结果集"选项卡中,"结果名称"设置为0(我也尝试将其设置csvids为选择列表中的别名列名称),并将"变量名称"设置为User::sCSVCompanyIds

我不知道为什么它不起作用.在浪费了这么多时间之后,我通过将结果作为Full Row集返回(同样的SQL总是返回1行1列)并为每个循环容器添加一个循环抛出结果集(将始终迭代)只有一次出于显而易见的原因)并将结果集的字段分配给变量.它适用于我,但应该有简单的方法.我错过了什么?

sql-server ssis ssis-2012

2
推荐指数
1
解决办法
7402
查看次数

动作脚本3 - 是否可以模拟鼠标按下时的压力

我想知道是否有可能检测到鼠标上的压力(按下鼠标按钮有多硬并保持不动)?如果没有,我们可以通过某种技术/方法进行模拟吗?

mouse actionscript-3

1
推荐指数
1
解决办法
291
查看次数