Laravel缓存:无效数据
Laravel Cache: invalid data
我有两个看起来非常相似的函数,它们被一个接一个地调用为 AJAX-来自 JavaScript 函数的请求。
/**
* 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;
}
现在,当我第一次访问该页面时,我可以正确获取数据(因为它还没有被缓存)。如果我第二次访问该页面,我会看到国家/地区,但对于机场,我会收到以下错误并且不明白为什么。
{"error":{"type":"Illuminate\Encryption\DecryptException","message":"Invalid data.","file":"C:\xampp\htdocs\laravel\vendor\laravel\framework\src\Illuminate\Encryption\Encrypter.php","line":132}}
我发现,它必须通过谷歌搜索和删除缓存部分来处理缓存。如果有人能帮我解决这个问题,我会很高兴。
顺便说一句,我正在使用数据库作为我的缓存驱动程序。
此致,马塞尔
我认为连载有些可疑。 $airports 有可能在序列化过程中损坏。
如果机场字符串值对于 MySQL 字段来说太长,那么结尾将被静默截断并且数据解密失败。
默认情况下Laravel建议值字段类型为文本。要使其更大,您可以使用 mediumText 或 longText 字段。
我有两个看起来非常相似的函数,它们被一个接一个地调用为 AJAX-来自 JavaScript 函数的请求。
/**
* 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;
}
现在,当我第一次访问该页面时,我可以正确获取数据(因为它还没有被缓存)。如果我第二次访问该页面,我会看到国家/地区,但对于机场,我会收到以下错误并且不明白为什么。
{"error":{"type":"Illuminate\Encryption\DecryptException","message":"Invalid data.","file":"C:\xampp\htdocs\laravel\vendor\laravel\framework\src\Illuminate\Encryption\Encrypter.php","line":132}}
我发现,它必须通过谷歌搜索和删除缓存部分来处理缓存。如果有人能帮我解决这个问题,我会很高兴。
顺便说一句,我正在使用数据库作为我的缓存驱动程序。
此致,马塞尔
我认为连载有些可疑。 $airports 有可能在序列化过程中损坏。
如果机场字符串值对于 MySQL 字段来说太长,那么结尾将被静默截断并且数据解密失败。
默认情况下Laravel建议值字段类型为文本。要使其更大,您可以使用 mediumText 或 longText 字段。