小编gho*_*oti的帖子

PHP PDO异常:找不到驱动程序

MySQL服务器和PHP5-MySQLi版本是否必须匹配才能实现连接?我目前收到以下错误:我正在运行BSD."致命错误:未捕获的异常'PDOException',消息'找不到驱动程序'......"

这是连接信息:

$info = "mysql:dbname=myDB;host=localhost";
$user = "dbUser";
$pw = "somePW";
return(new PDO($info, $user, $pw));
Run Code Online (Sandbox Code Playgroud)

这是我的MySQL信息:

MySQL的服务器-5.5.24

PHP5-mysqli的-5.4.3

php pdo freebsd

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

如何在一段时间内重试PHP flock()?

我需要打开一个日志文件进行编写.麻烦的是,许多事情可能同时做到这一点,我不想要冲突.每次写入都是一行,通常大约150个字节(并且总是小于1K),并且不严格按时间顺序获取内容.

我想要的是尝试flock(),如果它失败了,继续尝试几秒钟.如果在多次尝试后无法建立锁定,则放弃.

$fh=fopen($logfile, "a");

if (flock($fh, LOCK_EX|LOCK_NB)) {
  $locked=TRUE;
} else {
  $locked=FALSE;
  // Retry lock every 0.1 seconds for 3 seconds...
  $x=0; while($x++ < 30) {
    usleep(100000);
    if (flock($fh, LOCK_EX|LOCK_NB)) {
      $locked=TRUE;
      break;
    }
  }
}

if ($locked) {
  if (fwrite($fh, strftime("[%Y-%m-%d %T] ") . $logdata . "\n")) {
    print "Success.\n";
  } else {
    print "Fail.\n";
  }
  flock($fh, LOCK_UN)
} else {
  print "Lock failed.\n";
}
Run Code Online (Sandbox Code Playgroud)

我有两个问题,一个是普通的,一个是具体的.首先,除了以不同的方式(do...while等)实现相同的解决方案之外,是否有更好的一般策略来处理这种仅在PHP中运行的问题?其次,有没有更好的方法在PHP中实现它?(是的,我将这些分开了,因为我对战略部分真的很感兴趣.)

我考虑过的一个替代方案是使用syslog(),但PHP代码可能需要在可能无法作为选项提供系统级管理(即向/etc/syslog.conf添加内容)的平台上运行.

更新:|LOCK_NB …

php locking

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

awk和多行匹配(sub-regex)

我试图使用awk来解析多线表达式.其中一个看起来像这样:

_begin  hello world !
_attrib0    123
_attrib1    super duper
_attrib1    yet another value
_attrib2    foo
_end
Run Code Online (Sandbox Code Playgroud)

我需要提取与_begin和_attrib1相关的值.所以在这个例子中,awk脚本应该返回(每行一个):

hello world ! super duper yet another value 
Run Code Online (Sandbox Code Playgroud)

使用的分隔符是制表符(\ t)字符.空格仅在字符串中使用.

awk

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

如何在curl中传递变量?

目标是在 example.com 创建一个帐户。我们需要一个字母数字名称,我们已经得到了。

我们有什么:

$name="egon111"
$pw="notegon"

curl -s -X POST -d 'username="'"$name"'"&password="'"$pw"'"' https://example.com/create
Run Code Online (Sandbox Code Playgroud)

我们通常需要以下curl命令:

curl -s -X POST -d "username=egon111&password=notegon" https://example.com/create
Run Code Online (Sandbox Code Playgroud)

语法有什么问题?在我看来,我们目前准确地发送名称$name和密码$pw,而不是变量本身,这是完全错误的。我们得到以下错误:

Select a username that is alphanumeric.
Run Code Online (Sandbox Code Playgroud)

格雷茨,克拉拉

我是 stackoverflow 的新手。欢迎大家发表评论,以便我提高自己。

curl

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

在ubuntu中保存cron作业

我是ubuntu和cron的新手.我已在命令行中输入以下内容:

       crontab -e
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:"没有crontab泰迪 - 使用空的888"

然后我进入我希望它执行的时候(我相信这是对的?...我希望它每天运行一次,每天晚上8点运行):

                 00 18 * * * /*****/*****/****/test.php 
Run Code Online (Sandbox Code Playgroud)

这是我的问题,我不知道如何退回到命令行.我输入的所有东西都给了我奇怪的外观字母而输入(返回)却没有做任何事情.我已经读过这将完成这项工作

                 ESC : w q
Run Code Online (Sandbox Code Playgroud)

但它不适合我.我尝试输入,我试着同时按下它们,我一次尝试按一个.没什么,仍然卡住了.当我按下ESC时,它出现为^ [.

这可能是一个非常简单的问题,如果它是愚蠢的我会道歉,但我已经被困住了一段时间.任何帮助将非常感谢.

谢谢

PS我读的地方,如果这是你需要到在的cronjob年底做的端线的第一份工作......这是一个简单的输入按键或实际键入\n吗?

vi cron

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

如何使用.NET框架设置作业调度?

如何使用C#/ .NET进行简单的作业调度?

假设我有一个方法(某个类),我想每天,每小时,每周等自动运行.

这样做有一个简单的方法吗?

.net c# windows scheduling job-scheduling

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

电子邮件警报和 ping 脚本

我需要帮助更新这个脚本,如果 ping 失败,它会向另一个主机发送另一个 ping(除了现在发送的电子邮件,如果 ping 失败)。如何从这个脚本中做到这一点?

#!/bin/bash

HOSTS="IP ADRESS"
COUNT=4

for myHost in $HOSTS
do
    count=$(ping -c $COUNT $myHost | grep 'received' | awk -F',' '{ print $2 }' | a$
    if [ $count -eq 0 ]; then
        # 100% failed
        echo "Server failed at $(date)" | mail -s "Server Down" myadress@gmail.com
        echo "Host : $myHost is down (ping failed) at $(date)"
    fi
done
Run Code Online (Sandbox Code Playgroud)

email bash

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

获取最后一个斜杠后问号前字符串的正则表达式

示例网址 = http://www.example.com/aa/bb/cc/dd?q=ab&c=1

所以在这个 url 中,我需要在最后一个斜杠之后和问号之前有值 dd

如何为此编写正则表达式

我写了在最后一个斜杠之后获取值,但无法弄清楚如何在查询字符串之前获取唯一的值“dd”。

正则表达式:[^/]+$

regex

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

$0 中的 awk gsub 也更改变量

我试图将传入 awk 的文本分配给一个变量,然后更改 $0 ,然后输出原始字符串和更改后的字符串:

# echo "This is a test" |awk '{text=$0; gsub(/ /,"%20"); print $text; print $0;}' 
This%20is%20a%20test
This%20is%20a%20test
Run Code Online (Sandbox Code Playgroud)

但我期待着它的回归

This%20is%20a%20test
This is a test
Run Code Online (Sandbox Code Playgroud)

尝试更改 #text 变量会产生同样的效果。

# echo "This is a test" |awk '{text=$0; $text gsub(/ /,"%20"); print $text; print $0;}' 
This%20is%20a%20test
This%20is%20a%20test
Run Code Online (Sandbox Code Playgroud)

运行 DSM 6.2 的 Synology 上的 GNU Awk 4.1.3、API:1.1(GNU MPFR 3.1.3、GNU MP 6.0.0)

variables awk gsub

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

将sed输出重定向到stdin

我有一个文件,我目前发送的电子邮件是这样的

/usr/sbin/sendmail me@gmail.com < f1.txt
Run Code Online (Sandbox Code Playgroud)

我对文件进行了一些更改,以便它包含一个占位符,我使用sed进行调整

sed -e s/PLACEHOLDER/TEST/g f1.txt
Run Code Online (Sandbox Code Playgroud)

我如何结合2?我以为会这样做

/usr/sbin/sendmail me@gmail.com <(sed -e s/PLACEHOLDER/TEST/g f1.txt)
Run Code Online (Sandbox Code Playgroud)

但那"挂起".谁能指出我正确的方向?

bash

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

标签 统计

awk ×2

bash ×2

php ×2

.net ×1

c# ×1

cron ×1

curl ×1

email ×1

freebsd ×1

gsub ×1

job-scheduling ×1

locking ×1

pdo ×1

regex ×1

scheduling ×1

variables ×1

vi ×1

windows ×1