我有两个看起来几乎相同的函数,并且作为来自JavaScript函数的AJAX请求一个接一个地调用.
/**
* get all Airports for autocomplete
*/
public function getAirports(){
if(Cache::has('airports')){
return Cache::get('airports');
}
$airportModel = new Airport;
$airports = json_encode($airportModel -> _getForAutocomplete('iata_faa_code'));
Cache::put('airports', $airports, 600);
return $airports;
}
/**
* get all Countries for autocomplete
*/
public function getCountries(){
if(Cache::has('countries')){
return Cache::get('countries');
}
$countryModel = new Country;
$countries = json_encode($countryModel -> _getForAutocomplete('two_letter_code'));
Cache::put('countries', $countries, 600);
return $countries;
}
Run Code Online (Sandbox Code Playgroud)
现在,当我第一次访问该页面时,我正确地获取了数据(因为它还没有被缓存).如果我第二次访问该页面,我会收到这些国家/地区,但是对于机场我会遇到错误并且看不清楚原因.
{"error":{"type":"Illuminate\\Encryption\\DecryptException","message":"Invalid data.","file":"C:\\xampp\\htdocs\\laravel\\vendor\\laravel\\framework\\src\\Illuminate\\Encryption\\Encrypter.php","line":132}}
我发现,它必须通过谷歌缓存和删除缓存部分做一些事情.如果有人可以帮我解决那个问题,我会很高兴的.
顺便说一句,我使用数据库作为我的缓存驱动程序.
最好的问候,马塞尔
我相信序列化有一些可疑的东西.在序列化期间,$机场可能会被破坏.
如果机场字符串值对于MySQL字段来说太长,那么将无声地截断end并且数据解密失败.
默认情况下,Laravel建议将值字段类型设置为文本.要使其更大,您可以使用mediumText或longText字段.
| 归档时间: |
|
| 查看次数: |
1011 次 |
| 最近记录: |