我有一个使用共享内存的父子进程。孩子每秒将数据放入共享内存约 10 次。父母和孩子在写/读时使用信号量来锁定资源。这个解决方案工作了几个小时,然后我开始收到警告:
PHP 警告:sem_acquire():无法获取密钥 0x4101f1fb:第 350 行上的 script.php 中的参数无效
PHP 警告:sem_release():SysV 信号量 140105644163240(密钥 0x4101f1fb)当前不在脚本 34.php 中获取
看起来脚本超过了某个限制并且信号量被破坏了,但是我在ipcs 中找不到任何关于当前限制/使用的内容。
我也尝试使用sem_get以获得新的信号量 ID,但我无法通过共享内存将其传递给孩子shm_put_var不使用资源。
在长时间运行的进程中处理信号量的最佳方法是什么?
Perl中的这段代码工作多年,现在我的Spreadsheets登录失败,当我登录我的帐户时,我注意到切换到新的Drive版本.可能有些认证方法已被弃用?
my $auth = Net::Google::AuthSub->new;
my $response = $auth->login('LOGIN@gmail.com', 'PASS');
if ($response->is_success) {
print "Hurrah! Logged in\n";
} else {
die "Login failed: ".$response->error."\n";
}
Run Code Online (Sandbox Code Playgroud)
结果是:
Login failed:
Run Code Online (Sandbox Code Playgroud)
和代码:
use Net::Google::Spreadsheets;
my $service = Net::Google::Spreadsheets->new(
username => 'LOGIN@gmail.com',
password => 'PASS'
);
Run Code Online (Sandbox Code Playgroud)
结果是:
Net::Google::AuthSub login failed at /usr/local/share/perl/5.18.2/Net/Google/Spreadsheets.pm line 42.
Run Code Online (Sandbox Code Playgroud)
正如我所建议的那样,我试图跳过SSL证书检查:
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
Run Code Online (Sandbox Code Playgroud)
但这也没有用.我能做些什么才能让它发挥作用?谢谢.