草庐IT

持久化

全部标签

php - Laravel [5.2.21] 自定义 Auth Guard 不持久

我正在尝试设置自定义身份验证保护,一切正常。我能够登录Model,但是一旦我将访问者重定向到新页面,身份验证就会丢失。我可以在Controller执行重定向之前dd()Auth::guard('client')->user()就好了,但是在AuthenticateClient中间件。我正在使用默认的保护程序来验证用户,并且一切正常。我已确保路由位于启用session的web中间件下。我搜索过类似的问题,但找不到有效的解决方案。有什么解决办法吗?旁注:我知道我在下面的代码示例中使用了token,但我所做的不仅仅是针对该token进行验证。所以这是一个不同于为api验证token的系统。路

php - 在 HTTP 请求之间具有持久状态的模型

我想创建一个Web应用程序,其模型在HTTP请求之间保持不变。据我了解,像PHP这样的语言将每个HTTP请求都视为一个全新的连接,除了一些全局变量,如SESSION;所以每次用户更改页面时,我的所有PHP类都会再次加载到内存中(每个AJAX请求也会这样做)-每次都需要我从数据库中构建。我是不是弄错了,或者我是想让一个圆适合一个正方形?Memcached似乎是一个很好的解决方案,可以在页面请求之间将我的模型保存在内存中,但它仍然需要加载缓存。PHPCLI似乎很有前途,但在深入研究之后,它似乎比它的值(value)更麻烦。有什么建议吗? 最佳答案

php - 如何从 PHP 使用 HTTP 1.1 持久连接和流水线?

我正在构建一个RESTAPI(使用JSON作为数据编码)。API调用都将是HTTPPOST,我需要能够处理相当大的数量(每秒可能调用1000次或更多)。服务器(我负责)将使用Java实现,但客户端很可能使用PHP。由于请求率很高,我热衷于利用HTTP1.1中的请求流水线,但我不确定是否可以从PHP执行此操作(即PHP是HTTP客户端,不是服务器)。任何人都可以提供有关如何从PHP执行此操作的任何建议吗? 最佳答案 您可以使用pecl_http的HttpRequestPool[1]类并调用未记录的$pool->enablePipeli

php - 使用 PHPUnit 和半持久数据库进行单元测试

我是单元测试的新手,我正尝试在我正在处理的现有项目中开始使用PHPUnit。我面临的问题是我有很多单元测试需要足够公平的数据库。我已经为单元测试的唯一目的设置了一个SQLite数据库。有时我想为新测试删除并重新创建数据库(我指的是每个单独的类),以防止不必要的数据冲突。但是,如果我在同一个类中有相互依赖的单元测试,有时我不希望这种情况发生;这些可能需要访问在先前测试中保存的数据。我目前正在每个类的setUp()函数中获取一个"new"数据库。我没有预料到的是这个函数(与__construct()一样)会在所述类中的每个测试用例之后运行。有没有一种方法可以让每个测试类都刷新数据库?还是我

php - 是否可以向 Laravel 模型添加非持久属性?

我正在使用Laravel(Lumen)创建一个API,其中的对象包含一个字段,该字段是一个文件的路径。这些路径在数据库中存储为相对路径,但在将它们返回给用户时,我必须将它们转换为绝对url。现在我想知道是否有一种方便的方法可以将非持久字段添加到模型对象中。明明有Mutators但它们会持久保存到数据库中。我也想过创建一个后中间件,它遍历对象树并转换它找到的每个path字段,但这不是一种优雅的方式。这是我需要的最终转换:[{"id":1,"title":"Sometitle","media":[{"id":435,"path":"relative/path/to/some/file.ex

PHP:持久变量值

我必须读取一个文件并进行一些计算,然后将计算结果保存在一个变量中。我只需要这样做一次。在Java+Servlet中,我可以使用servlet容器和例如单例模式来完成此操作。我知道在PHP中我不能这样做。哪种方法更好?在DB上保存计算(或传输数据)? 最佳答案 不,它不会像JavaServlet那样工作。您必须找到解决方法。首先,我假设通常使用$_SESSION、$_COOKIE或$_REQUEST对您来说不切实际,因为您希望按服务器(或应用程序)而不是按“用户session”保存状态。在您的情况下,使用数据库听起来很可行。在常规应用

php - 拉维尔;如何使 setLocale 永久化?

我有我的家路线Route::get('/','HomeController@index')->name('home');以及更改语言的特定途径Route::get('/setLocale/{locale}','HomeController@setLocale')->name('setLocale');在HomeController->setLocale($locale)中,我检查$locale是否是一个有效的语言环境,然后简单地做\App::setLocale($locale);然后重定向到主页。在这里,在HomeController->index()中,我使用验证语言环境$local

php - 从服务器到服务器的持久登录信息

我目前在2个Web服务器上工作,一个是Coldfusion,另一个是PHP。现在,Coldfusion服务器是我的主要服务器,用户可以在其中登录以访问受限数据。但是,我也开始使用PHP服务器,并希望让用户透明地访问该服务器上的特定页面-该服务器也需要登录信息。我不希望用户登录两次。有没有办法做到这一点?谢谢更新:在Intranet环境中工作,所以我不能使用任何公共(public)解决方案。更新:我要求这样做的原因是因为我们正在从MSQL/Coldfusion环境(初始服务器)迁移到PHP/ORACLE(新服务器)。所以我也有2个用户表(尽管它们包含大部分相同的信息)。我正试图避免使用我

php - 单元测试持久层 - Symfony

我想在Symfony2中测试持久性。我想知道它是更好的模拟实体并提供给实体管理器还是更好的模拟实体管理器并将实体传递给管理器?我是第一个选项,但实体管理器抛出异常而不是对象不是实体学说。如何在PHPUNIT中测试持久性symfony? 最佳答案 与其编写单元测试,不如为持久层编写集成测试。单元测试中有一条规则“不要mock你不拥有的东西”。你不拥有Doctrine类或接口(interface),你永远无法确定你对你模拟的接口(interface)所做的假设是真实的。即使它们在您编写测试时为真,您也无法确定Doctrine的行为是否随

php - Symfony2 ManytoMany 双向关系 - 如何手动持久化

我正在处理一个包含2个输入字段和一个提交按钮的表单。第一个字段是一个简单的下拉列表(类别),而另一个是标签输入字段(标签),您可以在其中一次输入多个标签。这两个字段仅接受预定义的输入选项。类别选项值在javascript中硬编码:categories=[{"id":1,"categoryname":"standard"},{"id":2,"categoryname":"premium"},{"id":3,"categoryname":"gold"}];tag的选项是从数据库中的tag表中获取的。这是数据库表的屏幕截图:Category和Tag实体与Doctrine的ManytoMany